social-auth-app-django facebook backend state with redirect_uri

时间:2018-05-16 05:30:46

标签: python django python-social-auth django-socialauth

我知道我的问题听起来像是重复的,但我在没有找到任何解决方案的情况下到处寻找。

我正在为我的django webapp实现社交登录。到目前为止谷歌,推特和雅虎登录已按预期工作。但Facebook总是给出以下错误:

网址被阻止:此重定向失败,因为重定向URI未在应用的客户端OAuth设置中列入白名单。确保客户端和Web OAuth登录已启用,并将所有应用域添加为有效的OAuth重定向URI。

经过一番挖掘后,我学会了如何正确设置我的facebook登录:下面的Facebook应用设置

App Domains设置为domain.ext

Site URL设置为https://www.domain.ext/

Valid OAuth Redirect URIs设置为https://domain.ext/social/complete/facebook/

我还查看了重定向网址(如下所示),发现它包含state变量state=kMQH3TdKSdF8oYGGx7Xri4KgFaEQ9OyU。完整网址

https://www.facebook.com/v2.9/dialog/oauth?client_id=977674249054153&redirect_uri=https%3A%2F%2Fwww.domain.ext%2Fsocial%2Fcomplete%2Ffacebook%2F&state=kMQH3TdKSdF8oYGGx7Xri4KgFaEQ9OyU&return_scopes=true&scope=email%2Cpublic_profile

我的django应用上的我的Facebook登录网址为{% url 'social:begin' 'facebook' %}我在'social_core.backends.facebook.FacebookOAuth2'中有AUTHENTICATION_BACKENDS

我搜索并发现social-core github页面上已经解决了这样的问题。它说从v1.7.0开始,此行REDIRECT_STATE = False已被添加到facebook后端。我挖了源代码,发现是这样的。但我的应用程序的URL继续发送状态变量,我不知道为什么会这样。请其他人遇到这种奇怪的行为,如果是的话你是怎么解决这个问题的?

2 个答案:

答案 0 :(得分:0)

你试过django-allauth吗?我发现这是一个更好的解决方案。它为您提供内置支持的许多提供商和自定义提供商,为您提供第三方提供商集成。

答案 1 :(得分:0)

我在这个问题上花了好几个小时,但事实证明我只需要Valid OAuth Redirect URIs设置为https://www.domain.ext/social/complete/facebook/

请注意www.