Salesforce api会话已过期,如何自动重新连接

时间:2014-11-07 11:20:44

标签: javascript node.js api session salesforce

我正在使用节点模块jsforce将销售线索添加到salesforce潜在客户表。 https://www.npmjs.org/package/node-salesforce这是文档。该网站目前正在运行,但每天我都要在会话到期时重新启动服务器,我收到此消息

{ [INVALID_SESSION_ID: Session expired or invalid] name: 'INVALID_SESSION_ID', errorCode: 'INVALID_SESSION_ID' } undefined

这是设置它的代码部分:

conn.sobject("Lead").create({
  email : req.body.email,
  firstname : req.body.first_name,
  lastname : req.body.last_name,
  title : req.body.job_title,
  company : req.body.company,
  leadsource: 'Clearing Microsite',
  description: req.body.message
}, function(err, ret) {
  if (err || !ret.success) { 
    return console.error(err, ret);
  }
console.log("Created record id : " + ret.id);
  });
});

我猜测return console.error(err, ret)正在抓住会话到期的内容,但是在发生这种情况后如何才能重新连接?

我已尝试使用conn.logout然后使用登录功能重新登录,但无法使其正常工作且测试相当困难,因为它似乎只在一天后过期!

编辑: 我想我需要像if (err == {[INVALID...]}) {reconnect}这样的东西但是我不知道该用什么

1 个答案:

答案 0 :(得分:1)

if (err || !ret.success) {}我添加的内容中,我想我可能已经解决了这个问题:

if (err.name == 'INVALID_SESSION_ID') {
  conn.logout(function (err) {
    if (err) { return console.error(err); }
    conn.login(*login details*)
      // then repeated the lead entry
  });
}

我无法检查这是否有效直到明天早上会话超时,但如果确实有效则会更新

编辑: 没有工作,没有退出就试试。得到了这个错误

[Error: INVALID_SESSION_ID: Invalid Session ID found in SessionHeader: Illegal Session. Session not found, missing session key: <KEY> This is expected, it can happen if the session has expired and swept away, or if the user logs out, or if its just someone trying to hack in. ]

第二次编辑:退出注册就像一个魅力!谢谢@superfell