Facebook的OAuth“此url的域不包含在应用程序的域名”

首先让我开始说,我已经search了很长一段时间这个问题的答案…

我试图设置Facebook OAuth来与我的机器上本地开发的应用程序一起工作。 一切工作完美的Facebook授权直到我从使用localhost到另一个域名(仍然本地到我的机器。)现在我收到以下错误。

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

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

我在我的应用程序redirect(使用社交网站)是http://photovote.dev/auth/facebook/callback

在我的Facebook应用程序设置…

  • 我的应用程序域是photovote.dev
  • 我的网站url是http://photovote.dev/
  • 我有效的OAuthredirectURI是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=0ztcKhmWwFLtj72TWE8uOKTcf65JmePtG95MZLDD

我不知道问题在哪里

屏幕截图1
屏幕截图

屏幕截图2 在这里输入图像描述

如果您在Facebook中创build应用程序时input了错误的详细信息,通常会发生这种情况。 或者你改变了一个现有的应用程序的URL?

你能否请在这个页面重新检查你的APP的设置?

https://developers.facebook.com/apps

  1. select正确的应用程序,然后点击编辑button;

  2. 检查url和path是否正确input,并指向已安装Ultimate Facebook插件的网站。

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

你必须

  1. 在左侧,点击“+添加产品”,然后select“Facebooklogin”(在我的顶部)
  2. 查看左侧的新设置
  3. 您现在将拥有这些“产品设置”上的OAuth设置

在这里输入图像描述

附加信息:确保将callbackURL添加到Facebooklogin设置页面上的Valid OAuth redirect URIs字段中,例如http://localhost:3000

确保你的应用程序是公开的。 点击+添加产品现在去产品=> Facebooklogin现在执行以下操作:

有效的OAuthredirectURI:example.com/

取消授权回拨URL: https : //example.com/facebookapp http://unicodeitsolutions.com/

我有同样的问题。 我通过添加我的OAuthredirectURI作为getAccessToken函数调用的参数来解决这个问题:

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

如果没有参数发送到该函数,SDK自己生成redirectURI,这应该工作,但在我的情况下,它不。

希望这有助于某人。

我有同样的问题,它来自一个错误的client_id / Facebook应用程序ID。

您是否将Facebook应用程序切换为“公共”或“在线”?当您这样做时,Facebook将创build一个新的应用程序并添加新的应用程序ID。

您可以将url中的“client_id”参数值与Facebook控制台中的参数值进行比较。

这里我做了什么来解决这个问题: 在这里输入图像描述

基本上:

1)启用“embedded式浏览器OAuthlogin”

2)禁用“使用严格模式redirectURI”并像我一样inputredirectURI。

3)保留所有其他选项。 4)保存您的更改

5)享受:)

我有同样的问题,

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

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

这个选项应该在门户中启用:

在这里输入图像描述

在应用程序域部分,您正在编写您的应用程序域,但您还需要添加您的login域,即要求用户login的HTML页面的名称。 在我的情况下,我在本地主机上testing它,login路由是本地主机/login,如果我只把http://localhost.com在应用程序域部分,我得到这个错误。; 但是在添加http://localhost/login.com之后 ,错误被修复了。 而且在较新版本的SDK中,应用程序设置也已更改,其中没有OAuthredirect路由选项。 在成功获取OAuth令牌后,您必须直接从服务器端分配redirect路由。

这对我工作:

这是主要的事情要了解:Facebook将始终检查“ WWW ”域。 所以请确保http://www.your_domain.dev首先在您的浏览器上运行。

如果您的本地服务器上有多个虚拟主机,则其他一些虚拟主机可能会覆盖“ http://www.your_domain.dev ”。 所以请检查一下。 Apache将select域(或端口,或这些术语 – 我不是这方面的专家,但错误的教训)的FIRST定义。 这个虚拟主机重写的一个简单的快速解决方法是把“ http://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服务器,一切都应该现在工作。


我希望这会帮助你,节省你的时间。 我花了几乎整整一天的时间在网上search,把我的头发拉出来,找不到任何有用的东西,直到我find了这个。

截至2017年10月。

解决scheme,解决我的问题。

目前,FB呈现这个惊喜。

应用的客户端OAuth设置 确保客户端和Web OAuthlogin处于打开状态

在这里输入图像描述

要调整的设置位于https://developers.facebook.com/apps/%5Byour_app_itentifier%5D/fb-login/

尾部的斜线很重要。 他们必须匹配您的应用程序代码和FBpipe理员设置。 所以这是你的代码中的一个configuration(见下面如何获得开发应用程序的任何域名):

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

和这里

在这里输入图像描述

要在本地Windows计算机上获取应用程序的任何域名,请编辑host文件。 自定义名称是好的,以摆脱所有这些localhost:8080 0.0.0.0:30303 localhost:8080 0.0.0.0:30303 localhost:8080 0.0.0.0:30303 ,等等。 因为有些第三方服务如FB有时候不能让你使用127.0.0.0名字。

在Windows 10 hosts文件在这里:

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

备份初始文件,创build一个不同名称的副本(在本地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。

点击这里代码项目 ! 它的代码项目的例子。 它对我工作

在这里输入图像描述

大部分的答案都是将URL添加到应用程序的域中,但是在公司工作时,您没有这些访问权限。对于这些,您可以通过简单地创build一个虚拟主机并创build一个主机条目来绕过这个问题。


添加这个主机文件(/ etc / hosts)127.0.0.1 http://www.your_domain.com

创build一个虚拟主机。我用这个为apache虚拟主机

ServerAdmin网站pipe理员@ localhost ServerName http://www.your_domain.com

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