Facebook 身份验证:无法加载 URL:此 URL 的域未包含在应用的域中

Facebook Auth: Can't Load URL: The domain of this URL isn't included in the app's domains

我知道这个问题之前在 link 中被问过,但解决方案对我不起作用。

它显示的错误是这样的:

我也将我的域包含在应用程序的 facebook 域中 api, 我传递的重定向 url 格式是这样的: https://example.com/clients/authorization/facebook/a1njk2nkll55343nlk4/page

这里facebook/后面的随机字符是客户端的id,是动态的

此外,我在通过 facebook 登录时也遇到了同样的问题。

谢谢。

这可能是由于 Facebook API 的安全更新导致的问题。

这是来自 Facebook 开发者仪表板!

"In March, we're making a security update to your app settings that will invalidate calls from URIs not listed in the Valid OAuth redirect URIs field"

因此,为此,在有效 OAuth 重定向 URI 字段中添加您网站的回调 url

您需要在 Facebook 登录->设置中正确添加您的 oAuth 重定向 URI:有效的 OAuth 重定向 URI 在有效的 OAuth 重定向 URI 中,您可以包含以下格式的 uri: https://example.com/clients/authorization/facebook

认证时的重定向uri可以如下: https://example.com/clients/authorization/facebook&a1njk2nkll55343nlk4/page

此处用“&”分隔您需要的其他参数。

同样的情况也适用于facebook登录。将您的完整登录重定向 uri 添加到有效的 OAuth 重定向 URI。像这样:

https://example.com/login/facebook/callback

希望这对您有所帮助。

谢谢。

当前行为不支持动态 URL 重定向。

这是由于 2017 年 12 月宣布并于本月生效的重定向 URI 处理的更改,需要启用严格模式才能使用 OAuth 重定向:

https://developers.facebook.com/blog/post/2017/12/18/strict-uri-matching/

确保在以下位置设置应用域:

https://developers.facebook.com/apps/[your-app-ip]/settings/basic/

还有你所有的回调网址,包括 https:// 请看:

https://developers.facebook.com/apps/[your-app-ip]/fb-login/settings/

  • 如果您使用的是 PHP SDK,请确保您安装了最新版本 (v5.6.2)。

我对此有疑问。注意到在移动到 https:// 之后它仍然重定向到 http:// 经过长时间调查 fb sdk 后发现他们在检测您的网站是否安全时遇到问题。

因此,在文件中

facebookd-v5.*-sdk/Url/FacebookUrlDetectionHandler.php 更新两个函数。更新版本:

protected function protocolWithActiveSsl($protocol)
{
    $protocol = strtolower((string)$protocol);

    return in_array($protocol, ['on', '1', 'https', 'ssl', 'https, https'], true);
}

protected function getHostName()
{
    ...

    // Don't append port number if a normal port.
    if (($scheme == 'http' && $port == '80') || ($scheme == 'https' && $port == '443') || ($scheme == 'https' && $port == '80')) {
        $appendPort = '';
    }

    return $host . $appendPort;
}