让我首先说,我已经寻找这个问题的答案很长一段时间了……
我试图设置Facebook OAuth与我的应用程序,这是在我的机器上本地开发。Facebook授权的一切都很完美,直到我从使用localhost转移到另一个域名(仍然是我机器的本地域名)。现在我得到如下错误。
不能加载URL:这个URL的域不包括在应用程序的
域。要加载此URL,请添加所有域和子域
在你的应用程序设置的应用程序域字段。
我的hosts文件包含127.0.0.1 domain.dev(完美工作)
我的重定向在我的应用程序(使用Socialite)是http://domain.dev/auth/facebook/callback
在我的Facebook应用程序设置…
我的应用域名是Domain .dev
我的网站网址是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
这招对我很管用:
这里需要了解的主要事情是:Facebook总是会检查“WWW”域。因此,首先确保www.your_domain.dev在您的浏览器上运行。
如果您的本地服务器上有多个虚拟主机,那么其他一些虚拟主机可能会覆盖“www.your_domain.dev”。请检查一下。
Apache将选择域的FIRST定义(或者端口,或者其他类似的术语——我不是这方面的专家,但从错误中学会了)。
对于这个虚拟主机覆盖,一个简单的快速修复方法是将“www.your_domain.dev虚拟主机定义”放在“httpd-vhosts.conf”文件的最上面。
进入“/apache/conf/http -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服务器,现在一切都应该工作了。
我希望这将帮助你并节省你的时间。
我几乎浪费了一整天的时间在网上搜索,绞尽脑汁也找不到任何有用的东西,直到我发现了这个。
截至2017-10年。
解决了我的问题。
目前FB呈现这个惊喜。
…app的客户端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机器上应用程序的任何域名,请编辑主机文件。自定义名称可以很好地消除所有这些localhost:8080、0.0.0.0:30303、127.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
在主机中添加这个
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为例。