1

我试图找出在使用带有 node/express 的 passport-facebook 时 Facebook 身份验证是如何工作的。

我对 callbackURL 和下面的函数感到困惑。

有人可以向我解释设置回调URL(这是成功登录尝试结束的地方吗?和登录后似乎也被调用的函数(accessToken,...)之间的区别。

passport.use(new FacebookStrategy({
    clientID: FACEBOOK_APP_ID,
    clientSecret: FACEBOOK_APP_SECRET,
    callbackURL: "http://localhost:3000/auth/facebook/callback"
  },
  function(accessToken, refreshToken, profile, done) {
    User.findOrCreate({ facebookId: profile.id }, function (err, user) {
      return done(err, user);
    });
  }
));
4

1 回答 1

3

callbackURL是 facebook 的网络服务器自己将在流程结束时使用的 URL。Facebook 的服务器将发送一个 301 重定向响应,导致用户的浏览器导航到该 URL。所以这本质上是您发送给 facebook 本身的配置选项,passport.js 正在处理发送时间和地点的细节。当整个 oauth 舞蹈完成后,回调函数是护照将控制权交还给您的代码并说“嘿,看起来它有效。这是登录用户的好东西”的一种方式,因此您可以执行您的findOrCreate. 该函数内部的细节通常会因应用程序而异,而 oauth dance 总是相同的。这就是为什么护照在那里使用函数回调的原因。它允许您使用特定于应用程序或自定义逻辑的挂钩。

于 2013-10-31T15:13:06.333 回答