Я реализую бэкэнд, который взаимодействует с Facebook, используя API OAuth. Во-первых, я обменять код авторизации для маркера доступа:Facebook OAuth в Node.JS: сохранение токена доступа
var accessTokenUrl = 'https://graph.facebook.com/v2.3/oauth/access_token';
var params = {
code: req.body.code,
client_id: req.body.clientId,
client_secret: config.FACEBOOK_SECRET,
redirect_uri: req.body.redirectUri
};
request.get({
url: accessTokenUrl,
qs: params,
json: true
}, function(err, response, accessToken) {
...
});
мне понадобится этот маркер доступа для удобства запросов к API Facebook (запрашивающего информацию о профиле, размещение на временную шкалу и т.д.), так что мне нужно храните его где-нибудь на стороне сервера. Могу ли я сделать это просто сделать это:
exports.access_token = access_token;
Другими словами, exports.access_token уникален для каждого соединения с Node.js, или эта переменная используется всеми клиентами (в этом случае я мог бы абсолютно не делать это)?
Я также использовать JSON веб-токены, так что я мог бы также сделать это после запроса маркеров:
function createToken(accessToken) {
var payload = {
sub: accessToken,
iat: moment().unix(),
exp: moment().add(14, 'days').unix()
};
return jwt.encode(payload, config.TOKEN_SECRET);
}
Для использования маркеров для художественных запросов, я мог бы просто сделать:
var token = req.headers.authorization.split(' ')[1];
var payload = jwt.decode(token, config.TOKEN_SECRET);
var accessToken = payload.sub;
Или это тоже не рекомендуется? Причина, по которой я буду использовать токены JSON, заключается в том, что я использую Satellizer, который использует это по умолчанию.
'export' обычно является' module.exports', который кэшируется и делится по всему приложению, вам нужны сеансы и/или база данных, в которой хранятся пользователи и токены. – adeneo
Было бы целесообразным использовать второй вариант, используя токены JSON? Я только что проверил это и, похоже, работает, но я не уверен, что это правильный путь. –