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无法正常工作