Facebook社交身份验证登录:无法加载网址:此网址的域名未包含在应用的域

时间:2017-10-14 09:35:45

标签: django facebook-authentication python-social-auth

我正在使用Django和python-social-auth开发一个Web应用程序。我希望用户使用Facebook登录。

我在我的python设置中有这个:

SOCIAL_AUTH_FACEBOOK_KEY = '...'
SOCIAL_AUTH_FACEBOOK_SECRET = '...'
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']

当我的用户进入Facebook页面时,他们应该提供凭据,他们会看到如下错误:

Can't Load URL: The domain of this URL isn't included in the app's domains.
To be able to load this URL, add all domains and subdomains of your 
app to the App Domains field in your app settings.

在Facebook for Developers仪表板中,我添加了“Facebook登录”产品并添加了重定向网址:

http://localhost:8000/complete/facebook/

在设置中,网站站点网址设置为:http://localhost:8000/,应用域名设置为localhost

我做错了什么?

BTW这是我的用户在Facebook页面打开时看到的网址:

https://www.facebook.com/v2.9/dialog/oauth?scope=email&state=HSfkstGUR5028DMhUzfWOSgo6fpPx29E&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcomplete%2Ffacebook%2F%3Fredirect_state%3DHSfkstGUR5028DMhUzfWOSgo6fpPx29E&client_id=...&return_scopes=true

4 个答案:

答案 0 :(得分:3)

在Facebook登录应用中禁用“使用重定向URI的严格模式”设置。

OR

请注意生成的网址的redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcomplete%2Ffacebook%2F%3Fredirect_state%3DHSfkstGUR5028DMhUzfWOSgo6fpPx29E参数。

出于某种莫名其妙的原因,Facebook要求有效OAuth重定向URI设置为 完全 与重定向网址相同。

因此,请使用https://meyerweb.com/eric/tools/dencoder/之类的工具,解码网址并将有效OAuth重定向URI设置为完整网址。即:

http://localhost:8000/complete/facebook/redirect_state=HSfkstGUR5028DMhUzfWOSgo6fpPA59E

答案 1 :(得分:2)

social-auth-core升级到至少version 1.6.0应该有助于解决此问题。在其他变化中,它包括这一个:

  

REDIRECT_STATE后端默认FalseFacebookOAuth2

这是issue 141的结果更改,导致重定向网址生成时没有redirect_state参数,其动态值使白名单无法使用。

完成此操作后,请将https://<your-domain>/complete/facebook/添加到Facebook开发人员门户网站中的OAuth重定向白名单中。

答案 2 :(得分:0)

Facebook不喜欢应用设置中的localhost字段或Redirect URI参数中的redirect_uri。要解决此问题,只需在字段中设置一些内容(我使用http://myapp.com:8000,然后在127.0.0.1 myapp.com中添加条目/etc/hosts,并通过新网址http://myapp.com:8000)访问该应用。

答案 3 :(得分:0)

截至2018年4月4日,我面临同样的问题,我找到的唯一解决方案是: 有效的OAuth重定向URI 必须设置为与重定向网址完全相同

此处有更多信息:https://developers.facebook.com/blog/post/2017/12/18/strict-uri-matching/