Passport Facebook authentication for Angular



我正在使用nodejs+express+mongo和angularjs(MEAN)。我正在使用Facebook策略登录护照,但我似乎找不到从我的角度客户端访问用户信息(req.user)的方法。应该注意的是,角度前端位于另一个应用程序和 Web 服务器上,除了节点快速 mongo 侧。

这是我的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);
          }
        })

在此之后,我从邮递员打电话http://localhost:3000/auth/is_auth

但是 req.isAuthenticated() 总是 FALSE

可能是什么,我不能永远得到用户信息

req.isAuthenticated()

假的,如果你使用 CORS 并且在你的 ajax 请求中你没有将 withCredentials 设置为 true。确保withCredentials设置为 true

最新更新