Passport facebook身份验证无效

时间:2015-06-06 09:47:24

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

我有一个nodeJS应用程序(express),它有一个facebook登录名。我正在使用passport-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。

症状如下:如果我尝试转到root并且我之前没有使用facebook登录,则会将我带到正常的Facebook登录屏幕,就像它应该的那样。但是在那个屏幕上,有一个警告:

  

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

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

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

  

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

可能是因为您在应用中注册了哪个网站。如果您已将其注册到http://localhost:3000/,则应使用域localhost进行回调。如果您已将其注册为http://127.0.0.1:3000/,那么您应该使用127 ...