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
-
select正确的应用程序,然后点击编辑button;
-
检查url和path是否正确input,并指向已安装Ultimate Facebook插件的网站。
如果有人遇到这个问题,正在寻找这些设置(就像我一样)
你必须
- 在左侧,点击“+添加产品”,然后select“Facebooklogin”(在我的顶部)
- 查看左侧的新设置
- 您现在将拥有这些“产品设置”上的OAuth设置
附加信息:确保将callbackURL添加到Facebooklogin设置页面上的Valid OAuth redirect URIs
字段中,例如http://localhost:3000
确保你的应用程序是公开的。 点击+添加产品现在去产品=> Facebooklogin现在执行以下操作:
有效的OAuthredirectURI:example.com/
取消授权回拨URL: https : //example.com/facebookapp
我有同样的问题。 我通过添加我的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