我有一个 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。
症状如下: 如果我尝试转到根目录并且之前没有使用 facebook 登录,那么它将带我进入正常的 facebook 登录屏幕,这是应该的。但是在那个屏幕上,有一个警告:
应用程序配置不允许给定 URL 应用程序的设置不允许一个或多个给定 URL。它必须与网站 URL 或画布 URL 匹配,或者域必须是应用程序域之一的子域。
我检查了与此相关的所有问题,似乎是因为我没有在 facebook 应用程序配置中正确配置应用程序域和站点 url。但它们应该都很好:应用程序域:localhost,站点 url:http://localhost:3000/
所以我不知道它为什么抱怨它?我没有任何子域。我唯一的路线是:(/,/日历,/日历/事件)。最后的 /calendar/events 路由是 ajax 路由。无论如何,在我输入我的 facebook 凭据并登录后,该页面会将我重定向到一个空页面,网址为:(https://www.facebook.com/login.php?login_attempt=1)。我打开了开发者的工具,在其控制台中看到一条错误消息:
加载资源失败:服务器响应状态为 500(内部服务器错误)
但是,现在我实际上已登录。因为如果我现在转到 root 或 /calendar,它将带我到更正页面并显示我已正确登录。所以显然登录有效,但是重定向和允许的 URL 存在一些问题。我只是似乎不知道是什么以及为什么。我正在使用 mongodDB 作为数据库。