【问题标题】:Facebook OAuth "The domain of this URL isn't included in the app's domain"Facebook OAuth“此 URL 的域未包含在应用程序的域中”
【发布时间】:2016-09-01 00:20:01
【问题描述】:

首先让我说我已经寻找这个问题的答案很长一段时间了......

我正在尝试设置 Facebook OAuth 以使用在我的机器上本地开发的应用程序。一切都在 Facebook 授权下完美运行,直到我从使用 localhost 转移到另一个域名(仍然是我的机器本地)。现在我收到以下错误。

无法加载 URL:此 URL 的域未包含在应用的 域。为了能够加载此 URL,请添加所有域和子域 将您的应用添加到应用设置中的“应用域”字段。

我的主机文件包含127.0.0.1 domain.dev(完美运行)

我在应用中的重定向(使用社交名流)是 http://domain.dev/auth/facebook/callback

在我的 Facebook 应用设置中...

  • 我的应用域是domain.dev
  • 我的网站 URL 是 http://domain.dev/
  • 我的有效 OAuth 重定向 URI 是 http://domain.dev/auth/facebook/callback

出现错误消息时的 URL 是..

https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fdomain.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&state=0ztcKhmWwFLtj72TWE8uOKTcf65JmePtG95MZLDD

我不知道问题是什么......

屏幕截图 1

屏幕截图 2

【问题讨论】:

  • 嗨 dangel,您可能想从这篇文章中混淆您的 FB client_id
  • @dangel 你是怎么解决这个问题的??我有同样的问题,但无法解决。
  • @Ghimire,在我的情况下,我更改了 URL 并且没有更新我的客户\秘密。通过阅读下面的解决方案,看起来实际上可能有各种不同的原因都给出了相同的错误。

标签: facebook laravel facebook-graph-api oauth laravel-socialite


【解决方案1】:

如果您在 Facebook 创建应用程序时输入了错误的详细信息,通常会发生这种情况。或者您是否更改了现有应用的 URL?

能否请您在此页面重新检查您的APP的设置?

https://developers.facebook.com/apps

  1. 选择正确的App,点击编辑按钮;

  2. 检查 URL 和路径是否正确输入并指向您安装 Ultimate Facebook 插件的站点。

【讨论】:

  • 我刚刚看到您所说的“您更改了现有应用程序的 URL”,这正是发生的情况,我猜它导致生成了一个新的客户端\秘密 ID
  • 嗨,我也在尝试在我的应用程序中实现 fb oauth。我已经提供了有关 fb 应用程序的所有详细信息。但是,回调重定向时会出现以下错误。 InternalOAuthError:无法在 D:\node_tutorials\fb\node_modules\passport-oauth2 的 Strategy.OAuth2Strategy._createOAuthError (D:\node_tutorials\fb\node_modules\passport-oauth2\lib\strategy.js:370:17) 处获取访问令牌\lib\strategy.js:166:45 在 D:\node_tutorials\fb\node_modules\oauth\lib\oauth2.js:177:18
  • 另一件对我有用的尝试:尝试将你的回调从 https 切换到 http。这涉及更改调用 getLoginUrl() 的代码以及更改应用程序设置中的回调 URL。出于某种原因,尽管该站点使用 HTTPS,但回调从未对我使用 HTTPS。
  • 我有同样的问题,但是在本地打开页面时;我将127.0.0.1:8000 添加到授权地址,因为这是我的easyphp 安装的配置方式,但它仍然无法正常工作。我只能在线测试FB脚本吗?!?
  • "点击编辑按钮" ummm 那是哪个按钮?
【解决方案2】:

我遇到了同样的问题,它来自错误的 client_id / Facebook 应用 ID。

您是否将 Facebook 应用切换为“公开”或“在线”?当您这样做时,Facebook 会创建一个具有新应用 ID 的新应用。

您可以将 url 中的“client_id”参数值与 Facebook 仪表板中的参数值进行比较。

【讨论】:

  • 我所做的只是更改域和站点 URL 以对应从 localhost 更改为 photovote.dev。我在我的应用程序和 Facebook 设置中更新了重定向 URI。我可能会尝试创建一个新应用
  • 嗯,我想我更改了应用程序设置中的某些内容,导致生成了一个新 ID,因为你是对的,它不再匹配了。也许当我更新站点 URL 时?不管它是否再次工作
  • 这对我有用。在生产中使用旧的应用程序 ID。
【解决方案3】:

如果有人遇到这个并正在寻找这些设置(就像我一样)

你必须

  1. 在左侧,单击“+添加产品”并选择“Facebook登录”(它位于 最适合我)
  2. 查看左侧可用的新设置
  3. 您现在将在“产品设置”上拥有这些 OAuth 设置

附加信息:确保将回调 URL(如 http://localhost:3000)添加到 Facebook 登录设置页面上的 Valid OAuth redirect URIs 字段

【讨论】:

  • 这不是错误消息所指的内容。有一条关于 Valid OAuth redirect URIs 的特定错误消息,这不是这里发生的情况。该消息清楚地指向设置»基本»应用程序域。但是,问题是即使填写了正确的域,错误信息仍然出现。
  • @HakamFostok 城市词典不谈,数学在 LHS/RHS en.wikipedia.org/wiki/Sides_of_an_equation 的含义中占主导地位,尤其是在编码领域。
  • 这为我解决了问题。即使我正确填写了域,我也没有添加重定向 url。添加重定向 URL 解决了该问题。看起来目前 FB 正在为此问题发送错误的错误消息。
  • 我在本地工作,这是我的网址 127.0.0.1/CM/public 我的有效 OAuth 重定向 URI 应该是什么?
  • 这在 api v2.7 中对我有用,@RichardGarside 的评论是准确的。我没有为Valid OAuth Redirect URIs 设置值,添加此字段值解决了与更新App Domains 相关的错误FB 错误消息。
【解决方案4】:

我遇到了同样的问题,

我刚刚在我的应用程序设置https://developers.facebook.com/apps 中添加了我本地地址http://localhost/Facebook%20Login%20Test.htmlSite URL 的链接。

现在它工作正常 :) 我希望这很有用 ;)

【讨论】:

    【解决方案5】:

    我遇到了同样的问题。我通过将我的 OAuth 重定向 URI 作为参数添加到 getAccessToken 函数调用来解决它:

    $redirectLoginHelper->getAccessToken("https://www.example.com/myfacebookcallback")
    

    如果没有向该函数发送参数,SDK 会自行生成重定向 URI,这应该可以工作,但在我的情况下它没有。

    希望这对某人有所帮助。

    【讨论】:

    • 这是在将我的网站从 http 移动到 https 后,我可以使它工作的唯一方法。即使更改了 Facebook Api 设置中的所有域,它也无法正常工作。
    • 这应该是公认的答案。解决问题!
    • 就我而言,url 本身不应包含空参数。当我将“www.example.com?param”提供给 getAccessToken 时,FB 总是说它与我提供给 getLoginUrl 的 URI 不匹配,我绝对确定它是完全相同的。使用“www.example.com”不会出现这样的错误。
    • 谢谢。解决了这个问题 - facebook 真的很糟糕,因为所有这些错误都是抽象/模棱两可的,你也不知道在哪里看
    • 这回答了问题。
    【解决方案6】:

    确保您的应用是公开的。 点击 + 添加产品 现在转到产品 => Facebook 登录 现在执行以下操作:

    有效的 OAuth 重定向 URI:example.com/

    取消授权回调 URL:https://example.com/facebookapp

    【讨论】:

    • Deauthorize Callback URL : https://example.com/facebookapp 需要什么?没有它会起作用吗?
    • 取消授权回调 URL 不是强制性的......当用户取消我们的应用程序的授权时,facebook 将通过 url ping 我们。
    【解决方案7】:

    在应用程序域部分,您正在编写您的应用程序域,但您还需要添加您的登录域,即您要求用户登录的 html 页面的名称。就我而言,我在 localhost 上对其进行了测试,并且登录路由是 localhost/login,如果我只将 http://localhost.com 放在 App 域部分,我会收到此错误。但添加http://localhost/login.com 后,错误已修复。 并且应用程序设置在较新版本的 SDK 中发生了变化,其中没有 OAuth 重定向路由选项。成功获取 OAuth 令牌后,您必须直接从服务器端分配重定向路由。

    【讨论】:

      【解决方案8】:

      此选项应在门户中启用:

      【讨论】:

      • 谢谢。我有同样的问题,这是我错过的开关。
      • 谢谢!这也对我有用(我使用的是 Google Firebase。我还必须将“有效 OAuth 重定向 URI”设置为 google 为我的项目提供给我的 OAuth 重定向 URI。)
      【解决方案9】:

      这对我有用:

      以下是要了解的主要内容:Facebook 将始终检查“WWW”域。因此,请确保 www.your_domain.dev 首先在您的浏览器上运行。

      如果您的本地服务器上有多个虚拟主机,则其他一些虚拟主机可能会覆盖“www.your_domain.dev”。所以请检查一下。 Apache 将选择域的第一个定义(或端口,或这些术语中的某些东西——我不是这方面的专家,但从错误中学到了)。 这种虚拟主机覆盖的简单快速修复方法是将“www.your_domain.dev 虚拟主机定义放在文件“httpd-vhosts.conf”的最顶部。

      转到“/apache/conf/https-vhosts.conf”并将其放在文件的最顶部:

      <VirtualHost *:80>
      <Directory "C:/your_app_folder_path/">
          Options FollowSymLinks Indexes
          AllowOverride All
          Order deny,allow
          allow from All
      </Directory>
      ServerName your_domain.dev
      ServerAlias your_domain.dev
      DocumentRoot "C:/your_app_folder_path/"
      </VirtualHost>
      
      ###### FOR SSL #####
      <VirtualHost *:443>
          DocumentRoot "C:/your_app_folder_path/"
          ServerName your_domain.dev
          ServerAlias www.your_domain.dev
          SSLEngine on
          SSLCertificateFile "conf/ssl.crt/server.crt"
          SSLCertificateKeyFile "conf/ssl.key/server.key"
          <Directory "C:/your_app_folder_path/">
              Options All
              AllowOverride All
              Require all granted 
          </Directory>
      </VirtualHost>
      

      下一步:如果您使用的是Windows系统,请在“C:\Windows\System32\drivers\etc”中编辑“hosts”文件,添加两行:

      127.0.0.1 your_domain.dev
      127.0.0.1 www.your_domain.dev
      

      下一步:重新启动 Apache 服务器,现在一切正常。


      我希望这对您有所帮助并节省您的时间。 我浪费了几乎一整天的时间在网上搜索,并且一直在拔头发,但在找到这个之前找不到任何有用的东西。

      【讨论】:

        【解决方案10】:

        截至 2017 年 10 月。

        解决了我的问题的解决方案。

        目前FB呈现这个惊喜。

        ...应用的客户端 OAuth 设置。确保客户端和 Web OAuth 登录已开启...

        要调整的设置位于此处https://developers.facebook.com/apps/[your_app_itentifier]/fb-login/

        斜杠很重要。它们必须在您的应用代码和 FB 管理设置中匹配。所以这是您代码中某处的配置(请参阅下文如何获取开发应用程序的任何域名):

        {
            callbackURL: `http://my_local_app.com:3000/callback/`, // trailing slash
        }
        

        这里

        要获取本地 Windows 计算机上应用的任何域名,请编辑 host 文件。自定义名称可以很好地消除所有这些 localhost:80800.0.0.0:30303127.0.0.0:8000 等。因为某些第三方服务(例如 FB)有时无法让您使用 127.0.0.0 名称。

        在 Windows 10 上 hosts 文件在这里:

        C:\Windows\System32\drivers\etc\hosts
        

        备份初始文件,创建一个不同名称的副本(在原生 Windows CMD 中不起作用。我使用 Git for Windows,它有很多 Unix 命令)

        $ cp hosts hosts.bak
        

        将此添加到hosts

        127.0.0.1  myfbapp.com # you can access it in a browser http://myfbapp.com:3000
        127.0.0.1  www.myotherapp.io # In a browser http://www.myotherapp.io:2020
        

        为了摆脱端口部分:3000设置NGINX,例如。

        【讨论】:

        • 谢谢你,不知道后面的斜杠是必需的!
        • 2018 年 5 月 11 日,应用上的回调 url 和 facebook 上的有效 oauth 重定向 URI 必须相同。不过 https 是必须的。
        • 斜线可以节省我的时间。谢谢!
        【解决方案11】:

        这是我为解决此问题所做的:

        基本上:

        1) 启用“嵌入式浏览器 OAuth 登录

        2) 禁用“Use Strict Mode for Redirect URIs”并输入重定向 URI 就像我做的那样。

        3) 保留所有其余选项。

        4) 保存您的更改。

        5) 享受 :)

        【讨论】:

        • 这为我解决了。我不想公开我的应用程序,因为我只是在做一个教程并在本地测试它。谢谢@bangbang
        • 对我来说,Use Strict Mode for Redirect URIs 不能被禁用。
        • 2019 年严格模式后无法禁用,此解决方案将不再有效
        【解决方案12】:

        点击here Code Project! 它的代码项目示例。它对我有用

        【讨论】:

          【解决方案13】:

          我在生产环境中也发生了同样的 Facebook 错误。原因是我在 Facebook 注册了 2 个应用程序(本地、生产),但我将本地应用程序 ID 硬编码到源代码中,并忘记在部署之前将其切换为生产应用程序 ID。

          最佳实践要求您不应将应用 ID 硬编码到源代码中,但如果您这样做了,请不要像我错误地那样不匹配您的各种 Facebook 应用 ID。

          【讨论】:

            【解决方案14】:

            使用我自己的本地服务器。

            只需将http://localhost/my-site 作为网址添加到:

            https://developers.facebook.com/apps/YOUR-APP-ID/fb-login/

            为我工作。

            【讨论】:

              【解决方案15】:

              大多数情况下,没有在 FB 仪表板的产品部分插入正确的有效的 OAuth 重定向 URL。我建议按照以下步骤操作

              01.用下面的图片检查应用的基本设置是否正常

              02.查看是否添加了商品

              如果没有,您可以通过单击 + sine 轻松添加登录产品,如下所示。

              如果是,则进入产品设置内部。

              03.检查您是否提供了有效的 OAuth 重定向 URL

              它的简单意思是登录后应该做什么。这就是你的回调 URl。你可以在我的下面的图片中看到我添加了几个重定向 URL。

              1. 还有什么问题看我的视频--> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s

              【讨论】:

              • 2 年前的问题,以及指向外部网站的链接不应作为答案的主要内容。
              【解决方案16】:

              随着 FB 收紧登录程序,问题和答案不断变化。今天,我开始收到这条恐怖消息“此 URL 的域不包含在应用程序的域中。为了能够加载此 URL,请将应用程序的所有域和子域添加到应用程序设置中的应用程序域字段。”

              答案是:现在 FB 想要完整的重定向 uri。所以对我来说,它曾经只是https://www.example.com,现在需要https://www.example.com/auth/facebook/callback。这必须进入“有效 OAuth 重定向 URI”字段(开发人员/Facebook 登录->设置)

              【讨论】:

                【解决方案17】:

                Facebook 登录 -> 设置 -> 有效的 OAuth 重定向 URI -> 插入重定向 url 的域,记住你应该添加“https”或 http。 eg:如果你的redirect url是https://xxx.xxx.com/path/callback.do,你只需要输入https://xxx.xxx.com/,我就可以了。

                【讨论】:

                  【解决方案18】:

                  在我更新了我使用的 SDK 版本之前,没有什么对我有用。我从 5.0 开始。甚至 5.4.0 也不行。当我更新到 5.6.2 时,它可以完美运行,尽管更新日志中没有任何相关内容!

                  【讨论】:

                  • 我确实有这个问题!我正在使用“5.4.2”并升级到“5.6.2”
                  【解决方案19】:

                  如果这对其他人有帮助,当“有效的 OAuth 重定向 URI”成为强制性时,我在旧网站上开始发生这种情况。该站点仍在使用 V4 PHP SDK,通过升级到 V5 SDK 为我解决了这个问题。

                  【讨论】:

                    【解决方案20】:

                    我修复它的方法:我转到有效 OAuth 重定向 URI 文本框并设置 准确 URL,不仅仅是域

                    之前:https://my-website.com

                    之后:https://my-website.com/facebookoauth/facebooklogin

                    (你的url可能不一样,在浏览器的地址栏中查看)。

                    这是由设置对重定向 URI 使用严格模式导致的,该设置被锁定在“是”位置。

                    【讨论】:

                      【解决方案21】:

                      第一步: 使用所有 https://example.in 或 ssl 证书 URL, 不要使用http://example.in

                      第二步: facebook应用设置->基本设置->添加你的域或子域

                      第三步: facebook 应用程序登录设置->有效的 OAuth 重定向 URIs->登录后添加您的所有重定向 url

                      第四步: facebook应用设置->高级设置->域管理器->添加你的域名

                      执行所有这些步骤,然后使用您的应用程序 ID、应用程序版本、应用程序密码进行设置

                      【讨论】:

                        【解决方案22】:

                        Facebook 最近禁用了“Use Strict Mode for Redirect URIs”的切换按钮,因此您需要添加点击登录按钮时调用的确切 URI。就我而言,它如屏幕截图所示。 它为我解决了这个问题:)

                        【讨论】:

                          【解决方案23】:

                          无法加载 URL:此 URL 的域未包含在应用的 域。为了能够加载此 URL,请添加所有域和子域 将您的应用添加到应用设置中的“应用域”字段。

                          我今天遇到了这个问题,我发现 Facebook 文档和 SDK 至少可以说是对其他开发人员的不尊重和傲慢。

                          除了在没有太多信息的两个不同位置拥有“应用程序域”(如果添加“网络”平台,则为 3),您还需要转到 应用程序产品/Facebook 登录/设置和在 Valid OAuth Redirect URIs

                          下添加您的重定向 URL

                          错误没有说明 oauth 设置。

                          【讨论】:

                          • 是的,我也必须做这个额外的步骤。我分享你对文档的看法!
                          • 没错。查看有效的域,一切都是正确的。几十分钟后,我打开登录部分,再次看到重定向 url,它是空的。在两个地方拥有相同的东西是违反所有标准的。但是对 Facebook 有什么期望。
                          • 你救了我的命!
                          【解决方案24】:

                          就我而言,我只需要启用嵌入式浏览器 OAuth 登录

                          【讨论】:

                          • 我也在使用基于浏览器的登录,所以我遇到了同样的问题。下面还有一个输入框,我必须在其中输入确切的重定向 URI。
                          • 除了在没有太多信息的情况下在两个不同的位置拥有“应用程序域”(如果添加“网络”平台,则为 3),您还需要转到应用程序产品/Facebook 登录/设置并添加您的有效 OAuth 重定向 URI 下的重定向 URL
                          【解决方案25】:

                          我遇到了同样的问题.....问题在 PHP SDK 5.6.2 版本中,修复正在编辑以下文件:

                          facebook\src\Facebook\Helpers\FacebookRedirectLoginHelper.php

                          更改这一行

                          $redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code']);

                          $redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code','enforce_https']);

                          【讨论】:

                            【解决方案26】:

                            在 Magento 2 社交登录扩展上,您必须从面板复制有效 OAuth 重定向 URI,并将链接添加到 developers.facebook.com 的客户端 OAuth 设置页面中的有效 OAuth 重定向 URI 字段

                            【讨论】:

                              【解决方案27】:

                              如果您的游戏没有服务器/站点(例如,如果您像我一样为 Gameroom 开发)- 将“https://apps.facebook.com/xxxxxxxxxxxxxxxxx”(使用您的应用 ID 而不是“xxxxxxxxxxxx”)添加到“有效 OAuth 重定向 URI”。

                              【讨论】:

                                【解决方案28】:

                                就我而言,我解决了这个问题,方法是添加完整的 URL 而不仅仅是 facebook 要求的域。我希望他们将其重命名以进行更多说明。 所以有效的 OAuth 重定向 URI 应该是这样的:
                                之前https://www.mobile-battles.com
                                之后https://www.mobile-battles.com/register

                                【讨论】:

                                  【解决方案29】:

                                  Meta for Developers 界面目前提供了两个可以输入应用程序域的位置:“应用程序域”下的基本设置和“域管理器”下的高级设置。如果仅在域管理器中列出,SDK 可能无法识别您的域。

                                  【讨论】:

                                    猜你喜欢
                                    • 2018-03-30
                                    • 2021-11-13
                                    • 2016-10-05
                                    • 2018-03-27
                                    • 2018-07-25
                                    • 2018-09-06
                                    • 1970-01-01
                                    • 2018-09-09
                                    相关资源
                                    最近更新 更多