我正在开发一个应用程序,该应用程序使用通行证-facebook进行身份验证并为用户创建访问令牌,然后该应用程序可以使用此令牌进行API调用。没有帐户创建或数据库,只有提供令牌的Facebook登录名。
我遇到的问题是如何处理此令牌。令牌的有效期很短,我不确定最好的做法是管理令牌/在到期后生成新令牌。
到目前为止,我仅尝试将令牌存储为cookie。在考虑安全性的同时,是否还有更好的管理令牌的做法?
如果有什么用,这就是我到目前为止所拥有的:
server.js
...
app.get('/auth/facebook', passport.authenticate('facebook'));
app.get(
'/auth/facebook/callback',
passport.authenticate('facebook', { failureRedirect: '/error' }),
function(req, res) {
res
.cookie('token', req.user.token, {
expires: new Date(Date.now() + 9999999),
secure: true,
httpOnly: true
})
.send('success');
}
);
passport.js
module.exports = function(passport) {
passport.use(
new FacebookStrategy(
{
clientID: facebookID,
clientSecret: facebookSecret,
callbackURL: '/auth/facebook/callback'
},
function(accessToken, refreshToken, profile, done) {
var user = {
id: profile.id,
token: accessToken
};
return done(null, user);
}
)
);
passport.serializeUser(function(user, done) {
done(null, {
token: user['token']
});
});
然后我像这样使用令牌:
user.js
router.get('/', async (req, res) => {
graph.get(
'/me?fields=id,name,email,birthday,posts.limit(5)',
{ access_token: req.cookies['token'] },
function(err, data) {
res.json(data);
}
);
});