Facebook应用程序 - 此网址的域名未包含在应用程序的域中。为什么呢?

时间:2017-10-16 03:47:25

标签: php facebook facebook-graph-api facebook-php-sdk

尝试使用Facebook应用登录时,我收到以下错误:

  

无法加载网址:此网址的域名未包含在应用网域中。要加载此网址,请将应用的所有域和子域添加到应用设置中的应用域名字段。

如下图所示:

enter image description here

网址:http://www.facebook-php-test.com

以下是我在Facebook App上设置的配置。

注意:出于隐私目的,我更改了图片上App IDApp Secret的值)

enter image description here

此基本示例应用程序的代码位于此GitHub存储库中:

https://github.com/zeuscronos/facebook-php-test.com

我真的不知道为什么它会在the domain of this URL isn't included in the app's domains实际存在的时候说出来。

在字段上:App Domains我同时尝试了两个域:

  • facebook-php-test.com
  • www.facebook-php-test.com

但没有成功。

生成的登录URL如下:

https://www.facebook.com/v2.10/dialog/oauth?client_id=012345678901234&state=d3758e484d539bebd6505427aaf1fa3b&response_type=code&sdk=php-sdk-5.6.1&redirect_uri=http%3A%2F%2Fwww.facebook-php-test.com%2Ffb-callback.php&scope=email%2Cuser_friends%2Cuser_photos

我将域facebook-php-test.com配置为Apache服务器上的虚拟主机。

我必须说我已经和Facebook PHP SDK一起工作了很多,这是我第一次与此斗争。实际上,我遇到了另一个我正在使用的大型应用程序的问题,然后经过几个小时试图解决问题我创建了这个虚拟应用程序,试图弄清楚问题的原因是什么。

我尝试了许多事情但没有成功。

关于如何解决这个问题的任何想法?

感谢。

  

编辑01

根据Mr.Geeker评论的建议,我做了以下内容......

添加了产品:Facebook Login,配置如下:

enter image description here

然后,最后我可以继续前进,并且我被要求获得权限:

enter image description here

但遗憾的是,在授予权限后,我得到了以下内容:

enter image description here

关于如何从这一点继续的任何想法?

  

编辑02 - 解决方案

我在Use Strict Mode for Redirect URIs下停用了Client OAuth Settings选项。他们说strongly recommendedOn这个功能On但我无法使用Client OAuth Login

顺便说一下,我也禁用了Client OAuth Settings,因为我的应用没有使用它。

最后,我在Web OAuth Login下启用的唯一功能是:df = pd.DataFrame(columns=('artist', 'track', 'pos', 'neg', 'neu'))

3 个答案:

答案 0 :(得分:3)

Facebook现在将一些功能作为插件发挥作用。在左侧选择产品并添加产品。然后选择Facbook Login。从那里很直接,你会看到所有的Oauth选项出现。

最初回答here

答案 1 :(得分:2)

2018年3月,Facebook更新了API并强制所有应用程序保持严格模式开启。

要使其正常工作,您必须在Valid OAuth Redirect URIs字段中包含完整的回调网址。如果您重定向到“https://www.example.com/facebook/callback”,则必须包含完整的URI(不带参数):

enter image description here

必须在基本设置页面上的应用程序域和网站站点URL字段中设置域:

enter image description here

如果这些都无效并且“无法加载网址:此网址的域名未包含在应用的域中”。消息不断显示,检查您是否拥有最新版本的SDK 。在将PHP SDK从版本5.5更新到5.6.2后,我可以使它工作

答案 2 :(得分:0)

我使用的是PHP 5.5,我发现了这个错误。

PHP Facebook API VERSION =' 5.5.0',DEFAULT_GRAPH_VERSION =' v2.9'在我的回调页面中添加了?code = XXX ,如下所示:

mydomainExample.com/callbackFacebook.php ?code = XXXXXXX

我更改了源代码以删除'?'之后的字符串。现在回调网址只是

mydomainExample.com/callbackFacebook.php

修复可以在 getAccessToken 功能中的文件Facebook / Helpers / FacebookRedirectLoginHelper.php 中完成。我添加了一个' if '如下面第226行和问题一样:

$redirectUrl = $redirectUrl ?: $this->urlDetectionHandler->getCurrentUrl();

//the next 3 lines was added to avoid the bug (fixed)
if(strripos($redirectUrl, "?")){
  $redirectUrl = substr($redirectUrl, 0, strripos($redirectUrl, "?"));
}

// At minimum we need to remove the state param
$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl, ['state']);