辅助进程上的oAuth2刷新令牌

时间:2019-07-19 06:14:31

标签: node.js oauth-2.0 salesforce jsforce

我有一个NodeJS应用程序,该应用程序实质上是将在Heroku上运行的工作进程。该应用程序使用oAuth端点进行授权,然后使用新建立的连接开始侦听数据流。

建立连接后,工作人员坐在那里聆听,我不确定刷新令牌的方式/时间。

为了使流接收数据,必须将其连接。但是一旦这个过程开始,就不会有任何页面更改的交互作用,我将传递此令牌。

示例代码:

var express = require('express');
var router = express.Router();
var jsforce = require('jsforce')

// Vars
var oauth2 = new jsforce.OAuth2({
  loginUrl: 'https://example.my.salesforce.com',
  clientId: 'redacted',
  clientSecret: 'redacted',
  redirectUri: 'http://localhost:3000/oauth2/callback'
});

var conn = new jsforce.Connection({ oauth2: oauth2 });

// Auth
router.get('/oauth2/auth', function (req, res) {
  res.redirect(oauth2.getAuthorizationUrl());
});

// Callback with auth code
router.get('/oauth2/callback', function (req, res) {

  var code = req.param('code');

  conn.authorize(code, function (err, userInfo) {
    if (err) { return console.error(err); }
    console.log(conn.accessToken);
    console.log(conn.refreshToken);
    console.log(conn.instanceUrl);
    console.log("User ID: " + userInfo.id);
    console.log("Org ID: " + userInfo.organizationId);

    startWorker();
    res.status(200).send('begin');

  });

});

// Start listening for stream
function startWorker() {
  console.log('waiting for data...')
  conn.streaming.topic("/event/heroku_notification__e").subscribe(function (message) {
    console.dir(message);
  });
}

module.exports = router;

在此示例中,我正在使用express,以便可以进行必要的呼叫。我可能需要使用HTTP库,因为这不是Web进程。

startWorker()首次认证后开始,如何保持conn的生命?我在/oauth2/callback中获得了刷新令牌,但实际上没有什么可传递给我的,因为它只是打开一个流而不进行导航。

0 个答案:

没有答案