我正在开发一个应用程序,该应用程序使用通行证-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);
}
);
});