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

我试图设置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服务器,现在一切都应该工作了。


我希望这将帮助你并节省你的时间。 我几乎浪费了一整天的时间在网上搜索,绞尽脑汁也找不到任何有用的东西,直到我发现了这个。

其他回答

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

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

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

希望这能帮助到一些人。

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

直到我更新了我所使用的SDK版本,我才发现这些都不适合我。我从5.0开始。即使是5.4.0也不行。当我更新到5.6.2时,它完美地工作了,尽管在更改日志中没有任何相关的内容!

不能加载URL:这个URL的域不包括在应用程序的 域。要加载此URL,请添加所有域和子域 在你的应用程序设置的应用程序域字段。

我今天遇到了这个问题,我发现Facebook的文档和SDK对其他开发者是不尊重和傲慢的。

除了在两个不同的位置有“应用域名”而没有太多信息(如果你添加了一个“web”平台,则为3),你还需要去应用产品/ facebook登录/设置,并在有效OAuth重定向uri下添加你的重定向URL

该错误没有说明oauth设置。

这招对我很管用:

这里需要了解的主要事情是: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服务器,现在一切都应该工作了。


我希望这将帮助你并节省你的时间。 我几乎浪费了一整天的时间在网上搜索,绞尽脑汁也找不到任何有用的东西,直到我发现了这个。