NoneO Auth2 обновить токен на рабочем процессе
У меня есть приложение 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
библиотека, хотя, поскольку это не веб-процесс.
однажды startWorker()
начинается после аутентификации в первый раз, как сохранить conn
в живых? Я получаю токен обновления /oauth2/callback
но на самом деле мне нечего передать, поскольку он просто открывает поток, а не перемещается.