【问题标题】:Passport facebook authentication not working护照facebook身份验证不起作用
【发布时间】:2015-08-21 06:40:52
【问题描述】:

我有一个 nodeJS 应用程序 (express),它有一个 facebook 登录。我正在使用护照-facebook 身份验证,在此处passport-facebook 中进行了描述。几周前我的登录仍然可以正常工作,但现在发生了一些变化。我不确定 Facebook 是否改变了某些东西,或者我是否改变了。我没有触及任何登录代码,所以我怀疑它是 Facebook 端的东西。

这是我的验证码:

router.get('/', passport.authenticate('facebook'), function(req, res){
});

router.get('/auth/facebook/callback', passport.authenticate('facebook', {
  failureRedirect: '/' }),
  function(req, res) {
  res.redirect('/calendar');
});

基本上,我希望应用程序从应用程序的根目录自动对用户进行身份验证,然后在身份验证后重定向到 /calendar。

症状如下:如果我尝试转到根目录并且我之前没有使用 facebook 登录,那么它将带我到正常的 facebook 登录屏幕,这是应该的。但是在那个屏幕上,有一个警告:

应用程序配置不允许给定 URL 应用程序的设置不允许一个或多个给定的 URL。它必须与网站 URL 或画布 URL 匹配,或者域必须是应用程序域之一的子域。

我检查了与此相关的所有问题,似乎是因为我没有在 facebook 应用程序配置中正确配置应用程序域和站点 url。但它们应该都很好:应用程序域:localhost,站点 url:http://localhost:3000/

所以我不知道它为什么抱怨它?我没有任何子域。我唯一的路线是:(/,/日历,/日历/事件)。最后的 /calendar/events 路由是 ajax 路由。无论如何,在我输入我的 Facebook 凭据并登录后,该页面会将我重定向到一个空白页面,其 url 为:(https://www.facebook.com/login.php?login_attempt=1)。我打开了开发者的工具,在它的控制台中看到一条错误消息:

加载资源失败:服务器响应状态为 500(内部服务器错误)

但是,现在我实际上已经登录了。因为如果我现在转到 root 或 /calendar,它将带我到正确的页面并显示我已正确登录。所以显然登录有效,但是重定向和允许的 URL 存在一些问题。我只是似乎不知道是什么以及为什么。我正在使用 mongodDB 作为数据库。

【问题讨论】:

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


    【解决方案1】:

    我不知道为什么这会奏效,但我找到了解决方案。以前,我已将有效的 OAuth 重定向 URI 配置为 http://127.0.0.1:3000/auth/facebook/callback,并且一切正常。现在我将其更改为使用 localhost 而不是 127.0.0.1:3000,这似乎可以解决问题。现在一切都按预期工作,虽然我不知道为什么。如果有人能够清楚地告诉我原因,我会将其标记为正确答案。

    【讨论】:

      【解决方案2】:

      这可能与您在应用中注册的网站有关。如果您已将其注册到 http://localhost:3000/,您应该使用域 localhost 进行回调。如果您已将其注册为http://127.0.0.1:3000/,那么您应该使用 127...

      【讨论】:

        猜你喜欢
        • 2016-01-19
        • 2016-10-29
        • 2013-06-25
        • 2013-08-26
        • 2017-03-06
        • 2013-12-28
        • 2013-09-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多