繁体   English   中英

Passport Facebook身份验证不起作用

[英]Passport facebook authentication not working

我有一个nodeJS应用程序(快速),具有Facebook登录名。 我使用的是password-facebook身份验证,如此处password-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或Canvas URL匹配,或者域必须是该应用程序域之一的子域。

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM