节点/角度/ Passport / Satellizer令牌基于Facebook身份验证不返回令牌

时间:2016-04-19 01:14:56

标签: angularjs node.js passport.js passport-facebook satellizer

我在Angular上使用Satellizer,Node后端使用Passport.js进行身份验证。我已根据Satellizer文档实现了登录流程,并能够通过我的Passport / Node服务器将令牌返回给浏览器。 但是,当我返回令牌时,它会返回弹出窗口,而不是Angular应用程序本身。因此,弹出窗口自动关闭后,我在角度应用程序中收到此错误:< / p>

Expecting a token named "token

以下是我的护照路线:

app.post('/login/facebook', passport.authenticate('facebook-login', { 'scope': ['email'] }))

app.get('/login/facebook-callback', passport.authenticate('facebook-login'), function(req, res) { tokenHelper.createSendToken(req.user, res); })

这是我的Passport Facebook策略:

var facebookLoginStrategy = new FacebookStrategy({
    clientID: process.env.FACEBOOK_APP_ID,
    clientSecret: process.env.FACEBOOK_APP_SECRET,
    callbackURL: "http://localhost:8080/login/facebook-callback",
    passReqToCallback: true,
    profileFields: ['email']
}, function(req, accessToken, refreshToken, profile, done) {
    if (!req.user) {
        User.findOne({
            "facebookData.id": profile.id
        }, function(err, user) {
            if (err) return done(err);
            if (user) {
                // Authenticate
                console.log('found user')
                return done(null, user);
            } else {
                // Register
                console.log('making new user')
                var newUser = new User();
                newUser.facebookData = profile
                newUser.email = profile.emails[0].value
                newUser.username = profile.emails[0].value
                console.log(newUser)
                newUser.save(function(err) {
                    if (err) throw err;
                    return done(null, newUser);
                });
            }
        });
    } else {
        // Authorize
        console.log('updating user')
        var user = req.user
        user.facebookData = profile;
        user.save(function(err) {
            if (err) throw err;
            return done(null, user);
        });
    }
})
passport.use('facebook-login', facebookLoginStrategy)

即使我使用令牌,我也安装了护照会话,但它仍然将令牌返回到错误的位置。如何使Satellizer将弹出窗口中收到的令牌传递给角度应用程序?或者我是否需要修改我的身份验证流程以适应这些框架?谢谢你的帮助!

0 个答案:

没有答案