我正在尝试部署一个使用passport facebook策略的应用程序。我首先在本地主机上测试了我的应用程序,然后尝试将其部署到AWS。
在我的本地机器上似乎一切正常,但当我部署时,我尝试使用多个facebook帐户登录。
我将接收到的变量保存在api调用中,并通过angular检索这些变量
然而,我的第一个通过身份验证的用户,看起来一切正常,但当第二个用户通过身份验证时,它将覆盖他的变量,如用户名,个人资料图像等。
我知道它为什么要这么做。但我现在还没有想好解决方案。
以下是我在进行身份验证时的服务器端代码
app.get('/login/facebook',
passport.authenticate('facebook'));
app.get('/login/facebook/return',
passport.authenticate('facebook', { failureRedirect: '/login' }),
function(req, res) {
res.redirect('/');
UserID = req.user.id;
UserDisplayName = req.user.displayName;
UserProfileImage = req.user._json.picture.data.url;
console.log(req.user._json.picture.data.url)
var User = UserID + UserDisplayName;
var ProfilePicture = UserProfileImage
res.json({name: User , url: ProfilePicture});
});
app.get('/profileInfo', function(req, res){
var User = UserID + UserDisplayName;
var ProfilePicture = UserProfileImage
res.json({name: User , url: ProfilePicture});
});发布于 2017-01-09 03:25:33
你如何存储你的用户?
根据您的代码,我要求您将用户的id保存在UserID变量中,但是当下一个用户登录时,它将被覆盖。
我只是在发问,因为我看不到你的整个代码,但尝试如下所示:
var users = {};
app.get('/login/facebook/return',
passport.authenticate('facebook', { failureRedirect: '/login' }),
function(req, res) {
// save user to users object
users[req.user.id] = {
displayName: req.user.displayName,
profileImage: req.user._json.picture.data.url
}
res.redirect('/');
});
// you need to use some kind of sessions or cookies to know which user this is
// for simplicity let's assume you get profile by user's id /profileInfo/:id
app.get('/profileInfo/:id', function(req, res) {
res.json(users[req.params.id]);
});https://stackoverflow.com/questions/41534309
复制相似问题