Facebook Auth:无法加载 URL:此 URL 的域不包含在应用程序的域中

Posted

技术标签:

【中文标题】Facebook Auth:无法加载 URL:此 URL 的域不包含在应用程序的域中【英文标题】:Facebook Auth: Can't Load URL: The domain of this URL isn't included in the app's domains 【发布时间】:2018-08-30 19:35:08 【问题描述】:

我知道这个问题之前已经在这个链接Facebook OAuth "The domain of this URL isn't included in the app's domain" 中提出过,但是这个解决方案对我不起作用。

它显示如下错误:

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

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

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

谢谢。

【问题讨论】:

【参考方案1】:

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

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

“3 月,我们将对您的应用设置进行安全更新,这将使来自有效 OAuth 重定向 URI 字段中未列出的 URI 的调用无效”

因此,在 Valid OAuth redirect URIs 字段中添加您网站的回调 url

您需要在 Facebook Login->Settings: Valid OAuth Redirect URIs 中正确添加您的 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

希望这会有所帮助。

谢谢。

【讨论】:

成功了。谢谢。但是我也想传递另一个参数(例如: client_id ),它与回调 url 是动态的,以便我可以跟踪我授权的 id。现在我没有得到回调 url 中提到的 client_id。你能解释一下吗? 如果您使用的是 php SDK,那么首先更新它,如下面的@JorgeO 所述。然后,为您的 client_id 设置“状态”参数。您的网址将是 example.com/clients/authorization/facebook/page&state=id 然后在 facebook 开发人员控制台中的有效 OAuth 重定向 URI 中包含 example.com/clients/authorization/facebook/page 调整设置对我不起作用,将 facebook/graph-sdk 从 5.6.1 更新到 5.6.2 解决了问题。 那么您之前可能在重定向 URI 中插入了完整的 URL。 它对我不起作用。我有 graph-sdk 5.6.2 并且已经将我的 callbackurl 设置为 Valid OAuth Redirect URI 但添加参数不起作用【参考方案2】:

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

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

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

确保将 App Domain 设置在:

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)。

【讨论】:

【参考方案3】:

我对此有疑问。注意到移动到 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;

【讨论】:

以上是关于Facebook Auth:无法加载 URL:此 URL 的域不包含在应用程序的域中的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 登录:无法加载 URL 此 URL 的域未包含在应用程序的域中

Swift Facebook Auth with firebase canOpenURL:URL 失败:“fbauth2:/” - 错误:“操作无法完成。(OSStatus 错误 -10814。)”

facebook第三方登陆(使用sharedSDK)无法加载网址:这个URL的域名未包含应用的域名

Flutter Firebase auth facebook无法正常工作

Facebook Twitter Google line 登录之 fb登录

facebook的内容是动态加载的吗?