尝试使用Facebook应用登录时,我收到以下错误:
无法加载网址:此网址的域名未包含在应用网域中。要加载此网址,请将应用的所有域和子域添加到应用设置中的应用域名字段。
如下图所示:
网址:http://www.facebook-php-test.com
以下是我在Facebook App上设置的配置。
(注意:出于隐私目的,我更改了图片上App ID
和App Secret
的值)
此基本示例应用程序的代码位于此GitHub存储库中:
https://github.com/zeuscronos/facebook-php-test.com
我真的不知道为什么它会在the domain of this URL isn't included in the app's domains
实际存在的时候说出来。
在字段上:App Domains
我同时尝试了两个域:
但没有成功。
生成的登录URL如下:
我将域facebook-php-test.com
配置为Apache服务器上的虚拟主机。
我必须说我已经和Facebook PHP SDK
一起工作了很多,这是我第一次与此斗争。实际上,我遇到了另一个我正在使用的大型应用程序的问题,然后经过几个小时试图解决问题我创建了这个虚拟应用程序,试图弄清楚问题的原因是什么。
我尝试了许多事情但没有成功。
关于如何解决这个问题的任何想法?
感谢。
编辑01
根据Mr.Geeker
评论的建议,我做了以下内容......
添加了产品:Facebook Login
,配置如下:
然后,最后我可以继续前进,并且我被要求获得权限:
但遗憾的是,在授予权限后,我得到了以下内容:
关于如何从这一点继续的任何想法?
编辑02 - 解决方案
我在Use Strict Mode for Redirect URIs
下停用了Client OAuth Settings
选项。他们说strongly recommended
有On
这个功能On
但我无法使用Client OAuth Login
。
顺便说一下,我也禁用了Client OAuth Settings
,因为我的应用没有使用它。
最后,我在Web OAuth Login
下启用的唯一功能是:df = pd.DataFrame(columns=('artist', 'track', 'pos', 'neg', 'neu'))
。
答案 0 :(得分:3)
Facebook现在将一些功能作为插件发挥作用。在左侧选择产品并添加产品。然后选择Facbook Login。从那里很直接,你会看到所有的Oauth选项出现。
最初回答here
答案 1 :(得分:2)
2018年3月,Facebook更新了API并强制所有应用程序保持严格模式开启。
要使其正常工作,您必须在Valid OAuth Redirect URIs字段中包含完整的回调网址。如果您重定向到“https://www.example.com/facebook/callback”,则必须包含完整的URI(不带参数):
必须在基本设置页面上的应用程序域和网站站点URL字段中设置域:
如果这些都无效并且“无法加载网址:此网址的域名未包含在应用的域中”。消息不断显示,检查您是否拥有最新版本的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']);