Facebook OAuth“此URL的域不包含在应用程序的域中”


248

首先,我要说我已经搜索了这个问题已有相当一段时间了...

我正在尝试将Facebook OAuth设置为与我的计算机上本地开发的应用程序一起使用。直到我从使用localhost更改为另一个域名(仍在我的计算机本地)开始,使用Facebook授权一切都正常。现在,我遇到以下错误。

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

我的主机文件包含127.0.0.1 photovote.dev (完美)

我在应用中的重定向(使用Socialite)是 http://photovote.dev/auth/facebook/callback

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

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

错误消息时的URL是..

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

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

屏幕截图1
屏幕截图

屏幕截图2 在此处输入图片说明


3
嗨,丹吉尔,您可能想从这篇文章中混淆FB client_id
a.benain

@dangel您如何解决此问题?我也遇到同样的问题,但无法解决。
Ghimire

@Ghimire,在我的情况下,我更改了URL,但未更新我的客户端\秘密。通过阅读下面的解决方案,看起来实际上可能有各种不同的原因都导致相同的错误。
丹吉尔

Answers:


80

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

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

https://developers.facebook.com/apps

  1. 选择正确的应用程序,然后单击编辑按钮;

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


3
我刚才看到的是您所说的“您更改了现有应用程序的URL”,这正是发生的情况,而且我猜想它导致生成了新的客户端\秘密ID
dangel

嗨,我也在尝试在我的应用程序中实现fb oauth。我已经提供了有关fb应用程序的所有详细信息。但是,回调重定向时会出现以下错误。InternalOAuthError:无法通过Strategy.OAuth2Strategy._createOAuthError(D:\ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ strategy.js:370:17)获取访问令牌,位于D:\ node_tutorials \ fb \ node_modules \ passport-oauth2 \ lib \ strategy.js:166:45,位于D:\ node_tutorials \ fb \ node_modules \ oauth \ lib \ oauth2.js:177:18
Anand

另一个对我有用的方法是:尝试将回调从https切换到http。这涉及到更改调用getLoginUrl()的代码以及更改应用程序设置中的回调URL。由于某些原因,尽管该站点使用HTTPS,但回调对我而言从未与HTTPS一起使用。
Josh1billion

我有同样的问题,但是在本地打开页面时;我将127.0.0.1:8000添加到授权地址,因为这是我的easyphp安装的配置方式,但仍然无法正常工作。我只能在线测试FB脚本吗?!
jumpjack

“单击编辑按钮”是那个按钮?
亚历山大·米尔斯

210

万一有人碰到这个并且正在寻找这些设置(就像我以前那样)

你必须

  1. 在左侧,单击“ +添加产品”,然后选择“ Facebook登录”(对我来说是顶部)
  2. 查看左侧可用的新设置
  3. 现在,您将在“产品设置”上拥有这些OAuth设置

在此处输入图片说明

其他信息:确保将“回调URL”添加http://localhost:3000Valid OAuth redirect URIsFacebook登录设置页面上的字段中


22
这不是错误消息所指的。关于有效OAuth重定向URI,有一个特定的错误消息,这不是这里发生的情况。该消息明确指向设置»基本»应用程序域。但是,问题是,即使填写了正确的域,错误消息仍然会出现。
fritzmg

除了@HakamFostok都市词典以外,LHS / RHS en.wikipedia.org/wiki/Sides_of_an_equation的含义在数学中的地位更高,尤其是在编码领域。
Craig Lambie

9
这为我解决了。即使我正确填写了域,也没有添加重定向URL。添加重定向URL解决了该问题。看起来FB正在为此问题发送错误的错误消息。
理查德·加赛德

我在本地工作,这是我的URL 127.0.0.1/CM/public,我的有效OAuth重定向URI应该是什么?
Youssef Boudaya

1
这在api v2.7中对我有用,@ RichardGarside的注释是准确的。我没有设置任何值Valid OAuth Redirect URIs,添加此字段值解决了与更新您的有关的错误FB错误消息App Domains
johnsampson

60

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

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

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

希望这对某人有帮助。


2
这是将网站从http移到https后才能使其正常工作的唯一方法。即使更改了Facebook Api设置中的所有域,它也不起作用。
克里斯(Chris)

6
这应该是公认的答案。解决问题!
tormuto

就我而言,网址本身不应包含空参数。当我将“ www.example.com?param”提供给getAccessToken时,FB总是说它与我给getLoginUrl提供的URI不匹配,我绝对确定这是完全相同的。使用“ www.example.com”不会出现此类错误。
Chlind

2
谢谢 。解决了这个问题–从Facebook真的很糟糕,因为所有这些错误都是抽象的/模棱两可的,而且您也不知道在哪里看
digitalzoomstudio

这回答了问题。
John

35

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

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

取消对回调URL的授权:https : //example.com/facebookapp http://unicodeitsolutions.com/


1
是什么Deauthorize Callback URL : https://example.com/facebookapp需要?没有它会起作用吗?
约旦

取消授权回调URL不是强制性的...当用户取消授权我们的应用程序时,facebook将通过该URL对我们执行ping操作。
Sanjoy Kanrar

20

这是我为解决此问题所做的工作: 在此处输入图片说明

基本上:

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

2)禁用“ 对重定向URI使用严格模式 ”,然后像我一样输入重定向URI。

3)其余所有选项保持不变。

4)保存您的更改。

5)享受:)


这为我解决了。我不想公开我的应用程序,因为我只是在做一个教程并在本地对其进行测试。谢谢@bangbang
PHBeagle

1
对我来说,不能禁用对重定向URI使用严格模式
fdehanne

8

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

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

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


我所做的只是将域和站点URL更改为从localhost更改为photovote.dev。我在应用程序和Facebook设置中更新了重定向URI。我可能只是尝试创建一个新应用
丹格尔(Dangel)

嗯,我想我对应用程序设置进行了一些更改,导致生成了新的ID,因为您说对了,它不再匹配了。也许当我更新网站URL时?不管它是否再次
起作用

这对我有用。在生产中使用了旧的应用ID。
Marcus W

8

修复方法:我转到“有效的OAuth重定向URI”文本框并设置了确切的 URL,而不仅仅是域名

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

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

(该网址可能与您的情况不同,请在浏览器的地址栏中检查该网址)。

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


非常感谢。这解决了我的问题
vickris '18

7

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

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

除了将“应用程序域”放在两个没有太多信息的位置(如果添加“网络”平台,则为3)之外,您还需要转到应用程序产品/ facebook登录名/设置,并在有效OAuth重定向URI下添加重定向URL

该错误表明没有关于oauth设置的信息。


1
是的,我也必须执行此额外步骤。我同意您对文档的看法!
Magnus Smith,

6

截至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中不起作用。我在Windows上使用Git,它具有许多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是必须的。
尤达·普拉维拉

斜杠节省了我的时间。谢谢!
HyoJin KIM


6

大多数情况下是在FB仪表板的产品部分未插入正确的有效OAuth重定向URL的情况下发生的。建议您按照下面的步骤进行操作

01. 检查应用程序的基本设置是否正确,并带有波纹管图片

在此处输入图片说明

02. 检查是否添加了产品

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

如果是,则仅进入产品设置的内部。 在此处输入图片说明

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

它的简单含义是登录后应该显示什么。它不只是回叫URl。您可以在下面的图片中看到我添加了几个重定向URL。 在此处输入图片说明

  1. 进一步遇到问题观看我的视频-> https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s

2岁以下的问题以及指向外部网站的链接不应成为答案的主要内容。
zzxyz

6

Facebook最近禁用了“ 对重定向URI使用严格模式 ”的切换按钮,因此您需要添加准确的URI,即单击登录按钮时所调用的名称。就我而言,如屏幕截图所示。它为我解决了这个问题:)

在此处输入图片说明



5

就我而言,我要做的就是仅启用嵌入式浏览器OAuth登录

在此处输入图片说明


我也在使用基于浏览器的登录,因此遇到了同样的问题。在下面也有一个输入框,我必须在其中输入确切的重定向URI。
苦艾酒

4

在我更新所使用的SDK版本之前,对我没有任何帮助。我从5.0开始。甚至5.4.0也无法正常工作。当我更新到5.6.2时,即使变更日志中没有任何相关内容,它也可以正常工作!


1
我确实有这个问题!我使用的是“ 5.4.2”并升级到“ 5.6.2”
John Smith,


2

万一这对其他人有帮助,当“有效的OAuth重定向URI”成为强制性内容时,这在我的旧站点上就开始发生。该站点仍在使用V4 PHP SDK,并且通过升级到V5 SDK为我解决了该问题。


1

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


1

这为我工作:

这是要了解的主要内容: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”中编辑“主机”文件:

127.0.0.1 your_domain.dev
127.0.0.1 www.your_domain.dev

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


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


1

我遇到了同样的问题..... issu在版本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']);


0

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

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


0

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

只需http://localhost/my-site在以下位置添加为URL:

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

为我工作。


0

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

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



0

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

第二步:faceboook应用程序设置->基本设置->添加您的域或子域

第三步:faceboook应用程序登录设置->有效的OAuth重定向URI->登录后添加所有重定向URL

第四步:faceboook应用程序设置->高级设置->域名管理器->添加您的域名

完成所有步骤,然后使用您的应用程序ID,应用程序版本,应用程序密码进行设置


0

在Magento 2 Social Login扩展上,您必须从面板中复制有效OAuth重定向URI,并在developer.facebook.com上“客户端OAuth设置”页面的“有效OAuth重定向URI”字段中添加链接。



-1

大多数答案都是围绕将URL添加到应用程序域中的,但是在公司工作时,您没有这些访问权限。对于这些公司,您可以通过简单地创建虚拟主机并进行主机输入来绕过此访问。


将此添加到主机文件中(/ etc / hosts)127.0.0.1 www.your_domain.com

创建一个虚拟主机。我已将其用于apache虚拟主机

ServerAdmin webmaster @ localhost ServerName www.your_domain.com

    ProxyPass / http://localhost:5006/
    RewriteMap  lc int:tolower
    LogLevel debug

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.