我使用jsforce节点模块在salesforce中执行CRUD操作。
为了连接到salesforce,我有以下输入
用户名,密码,securityToken和loginUrl。
这是我第一次建立联系的方式。
var conn = new jsforce.Connection({
loginUrl: connectionDetails.salesforce.loginUrl
});
conn.login(connectionDetails.salesforce.username,
connectionDetails.salesforce.password + connectionDetails.salesforce.securityToken,
function(err, userInfo) {
if (!err) {
console.log('User with user id ' + userInfo.id + ' successfully logged into Salesforce');
successCb(conn.accessToken, conn.instanceUrl);
} else {
console.log('Login failed to https://test.salesforce.com/');
errorCb('Login failed to https://test.salesforce.com/');
}
});我将accessToken和Instanceurl存储在Express提供的req对象中。
在此之后,我将执行以下任何CRUD操作
var salesConn = new jsforce.Connection({
accessToken: salesforceAccessToken,
instanceUrl: salesforceInstanceUrl
});
salesConn.sobject('Lead').retrieve(someLeadID, function(err, data) {
...
});现在假设我将服务器闲置了几个小时,甚至可能是一天,那么如果我执行CRUD操作,那么调用就会失败。我很肯定本届会议已经结束了。
现在我有两个问题
PS --我试图用刷新令牌查看访问令牌,但只有在OAuth2授权代码流中才可用。
发布于 2015-01-11 11:47:47
有点晚了,但我今天遇到了同样的问题,每当我收到无效的会话错误时,我就调用conn.login(username, password+token)来解决这个问题。
不过,我正在做一些不同的事情,我不是要创建用于SF调用的第二个变量,而是使用原始的conn变量conn.sobject(...)。
发布于 2015-04-05 07:16:01
它将自动刷新令牌。我的jsforce版本是"jsforce": "^1.4.1"
jsforce有一个_refreshDelegate
Connection.prototype.login = function(username, password, callback) {
// register refreshDelegate for session expiration
this._refreshDelegate = new HttpApi.SessionRefreshDelegate(this, createUsernamePasswordRefreshFn(username, password));
if (this.oauth2 && this.oauth2.clientId && this.oauth2.clientSecret) {
return this.loginByOAuth2(username, password, callback);
} else {
return this.loginBySoap(username, password, callback);
}
};https://stackoverflow.com/questions/26189963
复制相似问题