gpt4 book ai didi

javascript - Angular 的 Passport Facebook 身份验证

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:19 24 4
gpt4 key购买 nike

我正在使用nodejs+express+mongo 和 angularjs(MEAN)。我正在使用 Facebook Passport 策略登录,但我似乎无法找到从我的 Angular 客户端访问用户信息(req.user)的方法。应该注意的是,除了 Node Express mongo 端之外, Angular 前端位于另一个应用程序和 Web 服务器上。

这是我的nodejs代码:

      passport.serializeUser(function(user, done){
done(null, user._id);
});

passport.deserializeUser(function(id, done){

UserModel.findById(id, function(err, user){
done(err, user);
});
});

passport.use(new FacebookStrategy({
clientID: config.facebook.appId,
clientSecret: config.facebook.appSecret,
callbackURL: config.facebook.redirectUri,
scope: config.facebook.scope,
profileFields: ['name','displayName','gender','profileUrl','email']

},
function(accessToken, refreshToken, profile, done) {

UserModel.findOne( {$or:[{'facebook_profile.id': profile.id},{'email':profile.emails[0].value}]}, function(err, user){
var newuser = new UserModel();
if(err){

return done(err);
}
if(user){
return done(null, user);
}
else {


newuser.facebook_profile.id = profile.id;
newuser.facebook_profile.name = profile.displayName

return done(null, newuser);



}
});
})
);

app.get('/auth/is_auth', function(req, res){

if (req.isAuthenticated()){
res.json(req.user);

}
})

此后,我从 postman 那里打电话 http://localhost:3000/auth/is_auth

但是 req.isAuthenticated() 始终为 FALSE

这可能是什么,我永远无法获取用户信息

最佳答案

req.isAuthenticated() 为 false,如果您使用 CORS 并且在 ajax 请求中未设置 withCredentials为真。确保 withCredentials 设置为 true

关于javascript - Angular 的 Passport Facebook 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37536146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com