Javascript Passport facebook身份验证不起作用

Javascript Passport facebook身份验证不起作用,javascript,node.js,facebook,facebook-login,passport-facebook,Javascript,Node.js,Facebook,Facebook Login,Passport Facebook,我有一个nodeJS应用程序(express),它有一个facebook登录名。我正在使用passport facebook身份验证,如这里所述。我的登录在几周前还可以正常工作,但现在有些事情发生了变化。我不确定Facebook是否改变了什么,或者我是否改变了什么。我还没有接触到任何登录代码,所以我怀疑这是facebook的最终目的 这是我的身份验证码: router.get('/', passport.authenticate('facebook'), function(req, res){

我有一个nodeJS应用程序(express),它有一个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:

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

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


但是,现在我实际上已经登录了。因为若我现在转到root或to/calendar,则需要我更正页面并显示我已正确登录。显然,登录可以正常工作,但是重定向和允许的URL存在一些问题。我只是不知道是什么和为什么。我使用mongodDB作为数据库。

我不知道为什么这样做有效,但我找到了一个解决方案。在此之前,我已经将有效的OAuth重定向URI配置为,并且工作正常。现在我将它改为使用localhost,而不是127.0.0.1:3000,这似乎起到了作用。现在一切都按预期进行,尽管我不知道为什么。如果有人能清楚地告诉我原因,我会将其标记为正确答案。

我甚至不知道为什么这样做有效,但我找到了解决办法。在此之前,我已经将有效的OAuth重定向URI配置为,并且工作正常。现在我将它改为使用localhost,而不是127.0.0.1:3000,这似乎起到了作用。现在一切都按预期进行,尽管我不知道为什么。如果有人能清楚地告诉我原因,我会将其标记为正确答案。

这可能是因为你在应用程序中注册了哪个网站。如果已将其注册到,则应使用用于回调的域localhost。如果您已注册为,那么您应该使用127…

这可能是因为您在应用程序中注册了哪个站点。如果已将其注册到,则应使用用于回调的域localhost。如果你已经注册了,那么你应该和127一起工作