首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jsforce更新salesforce会话?

如何使用jsforce更新salesforce会话?
EN

Stack Overflow用户
提问于 2014-10-04 05:26:52
回答 2查看 2.3K关注 0票数 2

我使用jsforce节点模块在salesforce中执行CRUD操作。

为了连接到salesforce,我有以下输入

用户名,密码,securityToken和loginUrl。

这是我第一次建立联系的方式。

代码语言:javascript
复制
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操作

代码语言:javascript
复制
 var salesConn = new jsforce.Connection({
            accessToken: salesforceAccessToken,
            instanceUrl: salesforceInstanceUrl
        });

salesConn.sobject('Lead').retrieve(someLeadID, function(err, data) {
    ...
});

现在假设我将服务器闲置了几个小时,甚至可能是一天,那么如果我执行CRUD操作,那么调用就会失败。我很肯定本届会议已经结束了。

现在我有两个问题

  1. 以上使用我所拥有的输入连接细节与salesforce建立连接的正确方式吗?
  2. 我如何知道会话已经过期,并创建了一个新会话?

PS --我试图用刷新令牌查看访问令牌,但只有在OAuth2授权代码流中才可用。

EN

回答 2

Stack Overflow用户

发布于 2015-01-11 11:47:47

有点晚了,但我今天遇到了同样的问题,每当我收到无效的会话错误时,我就调用conn.login(username, password+token)来解决这个问题。

不过,我正在做一些不同的事情,我不是要创建用于SF调用的第二个变量,而是使用原始的conn变量conn.sobject(...)

票数 1
EN

Stack Overflow用户

发布于 2015-04-05 07:16:01

它将自动刷新令牌。我的jsforce版本是"jsforce": "^1.4.1"

jsforce有一个_refreshDelegate

代码语言:javascript
复制
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);
 }
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26189963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档