2016-02-12 69 views
0

我有一个关于 https://github.com/jaredhanson/passport-facebook节点护照的Facebook SDK successRedirect VS callbackURL

当我使用的护照Facebook的具体问题。 我喜欢这个配置。

passport.use(new FacebookStrategy({ 
    clientID: config.facebook.facebook_app_id, 
     clientSecret: config.facebook.facebook_secret_id, 
     callbackURL: config.facebook.callback_url, 
     passReqToCallback: true 
    }, 
     function(req, accessToken, refreshToken, profile, done) { 
    //code for success: Function A 
    } 

然后验证

passport.authenticate('facebook', { 
     successRedirect: 'http://app.mykomae.com/#/app/dashboard', 
     failureRedirect: '/auth/unauthorized' 
    })); 

是什么VS callbackURL successRedirect区别?

并且当函数处理程序'Function A:above code'正在调用?

感谢

回答

1

callbackURL告诉上外部地址,用户完成身份验证表单后可以将其再打你的应用程序,而sucessRedirect是对failureRedirect是根据认证结果执行内部路由的Facebook。

passport.authenticate(...)编排整个过程。 “快乐”的流动大致如下:

  1. passport.authenticate(...)检测到存在未被验证的用户试图访问给定的路径,它重定向至Facebook的OAuth;
  2. 如果facebook auth成功,您的验证回调被调用(这是您的“功能A”),它应该通过您的内部用户数据库中的facebook用户名匹配用户并相应地进行设置(通常为用户创建一个会话) ;
  3. 如果一切顺利,用户将被重定向到successRedirect,这通常是一个内部路由,如/profile,从那时起,您可以使用在上一步中查找的用户数据。

我希望能解释一下。

+0

感谢您的答案,步骤。在上面的步骤中使用callbackURL的时候?它从未被使用过? –

+0

Np。 'callbackURL'是一个完整的URL Facebook可以调用你的应用程序。这是你想调用'passport.authenticate(...)'的地方。例如。当'callbackURL'为'http:// your.domain.example.com/callback'时,你应该将'passport.authenticate(...)'放在这样的路由中:'app.get('/回调',passport.authenticate(...),...)'。 –

+0

我已经指定'successRedirect'和callbackURL在一起。如果登录成功,哪个网址会被回叫?如果两个网址一起被调用,那么订单是什么?再次感谢 –