【问题标题】:passport-facebook strategy callback function never gets calledpassport-facebook 策略回调函数永远不会被调用
【发布时间】:2018-08-02 14:14:29
【问题描述】:

我是护照的新手,在这里我尝试使用护照-facebook 策略进行身份验证。 但是“FacebookStrategy”中定义的回调函数永远不会被调用意味着“Facebook回调被调用”永远不会被打印在控制台上。 虽然成功案例每次都会运行。

这是我的代码

// Initialising passport
router.use(passport.initialize());

//router.use(passport.session()); /*I don't want to use passport session*/

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

passport.deserializeUser(function (obj, done) {
    done(null, obj);
});

/**
 *  Configuring FacebookStrategy
 */
passport.use(new FacebookStrategy({
    clientID: 'facebook_client_id', // Facebook Client ID
    clientSecret: 'facebook_client_secret', // Facebook Client Secret
    callbackURL: 'https://sheltered-earth-74671.herokuapp.com/signin/facebook/callback' // Callback URL after user allow information access
}, function (accessToken, refreshToken, profile, done) { // Callback Function

    console.log('Facebook callback called'); /*THIS ISN'T PRINTING*/

    done(null, profile);
}));

router.get('/facebook', passport.authenticate('facebook', {
    scope: ['email']
}));

router.get('/facebook/callback', (req, res, next) => {
    res.send(req.query.code);  // This is working
});

谢谢

【问题讨论】:

    标签: javascript node.js npm passport.js passport-facebook


    【解决方案1】:

    如文档所示:

    将回调函数更新为:

    router.get('/facebook/callback', 
        passport.authenticate('facebook', 
        { successRedirect: '/', failureRedirect: '/login' }
    )); 
    

    See more here.

    【讨论】:

    • 这完成了工作,但你能告诉我为什么调用这个函数很重要。
    • Facebook 将在批准后将用户重定向到此 URL。通过尝试获取访问令牌来完成身份验证过程。如果授予访问权限,则用户将登录。否则,身份验证失败。
    • 感谢您向我解释这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 2013-03-13
    相关资源
    最近更新 更多