【问题标题】:Facebook Auth: Can't Load URL: The domain of this URL isn't included in the app's domainsFacebook Auth:无法加载 URL:此 URL 的域不包含在应用程序的域中
【发布时间】: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 登录时也遇到了同样的问题。

谢谢。

【问题讨论】:

    标签: php facebook api laravel-5 facebook-php-sdk


    【解决方案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;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-13
        • 2016-09-12
        • 2018-08-26
        • 2018-06-05
        • 2016-10-05
        • 2020-07-04
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        相关资源
        最近更新 更多