Php OAUTH:FacebookAPI抛出错误,因为重定向url参数错误
我在我的网站上使用FB登录,并且在两年多的时间里,集成工作是无缝的 然而,几天来,我偶尔在日志中看到这样的错误: 无法加载URL:此URL的域未包含在应用程序的 域名。要加载此URL,请添加所有域和子域 将应用程序的名称添加到应用程序设置中的“应用程序域”字段 调用的URL如下所示:Php OAUTH:FacebookAPI抛出错误,因为重定向url参数错误,php,facebook-graph-api,oauth-2.0,Php,Facebook Graph Api,Oauth 2.0,我在我的网站上使用FB登录,并且在两年多的时间里,集成工作是无缝的 然而,几天来,我偶尔在日志中看到这样的错误: 无法加载URL:此URL的域未包含在应用程序的 域名。要加载此URL,请添加所有域和子域 将应用程序的名称添加到应用程序设置中的“应用程序域”字段 调用的URL如下所示: https://www.mydomain/de/oauth2/facebook?code=abcdefgxyz&deferred_redirect_uri&state=12345 我不知道参数de
https://www.mydomain/de/oauth2/facebook?code=abcdefgxyz&deferred_redirect_uri&state=12345
我不知道参数deferred\u redirect\u uri是什么(它不是一个有效的标准参数),也不知道它来自哪里,但我想这就是登录失败的原因
重要的是要注意,FB登录在99.99%的情况下仍然工作得很好,因此所有正确的URL都存在于Facebook开发者后端的应用程序设置中。设置绝对有效
所以我想知道这个罕见的错误是从哪里来的,如果这是某种黑客企图
如果您有任何见解,我们将不胜感激。您是对的,我们也遇到了同样的问题,因为当URL包含延迟重定向\u uri
时,登录失败并返回该错误
我们发现正在工作的修复有点棘手,不应该将其用作“最终”解决方案:在Helpers/facebookrirectloginhelper.phpfacebookrirectloginhelper
类中,有一个getAccessToken
函数调用FacebookUrlManipulator
的静态函数removeParamsFromUrl
。
该函数基本上会在获取OAuth2令牌之前删除所有不需要的参数,因此在我们将奇怪的参数添加到该数组之后,登录错误就消失了
public function getAccessToken($redirectUrl = null)
{
if (!$code = $this->getCode()) {
return null;
}
$this->validateCsrf();
$this->resetCsrf();
$redirectUrl = $redirectUrl ?: $this->urlDetectionHandler->getCurrentUrl();
// At minimum we need to remove the 'code', 'enforce_https' and 'state' params
$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl, ['code', 'enforce_https', 'state', 'deferred_redirect_uri']);
return $this->oAuth2Client->getAccessTokenFromCode($code, $redirectUrl);
}
哈哈哈,英雄所见略同:这正是我所想的,但我想,如果有人有比这更好的解决方案,我会看看。但问题依然存在:这个参数从何而来?这是一个非常好的问题,因为这个问题在周六早上对我们来说是无中生有的。Facebook support上也出现了一个bug,但没有关于该错误的其他信息。