【问题标题】:social-auth-app-django facebook backend state with redirect_uri带有redirect_uri的social-auth-app-django facebook后端状态
【发布时间】:2018-10-26 01:06:49
【问题描述】:

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

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

URL 被阻止:此重定向失败,因为重定向 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/

我还查看了重定向 url(如下所示),发现它包含一个 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' %},我在 AUTHENTICATION_BACKENDS 中有这个 'social_core.backends.facebook.FacebookOAuth2'

我在social-core github页面上搜索发现已经解决了这样的问题。它说从 v1.7.0 开始,这条线 REDIRECT_STATE = False 已添加到 facebook 后端。我深入研究了源代码,发现确实如此。但是我的应用程序的 url 不断发送状态变量,我不知道为什么会这样。请问有没有其他人遇到过这种奇怪的行为,如果有,您是如何解决的?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      注意www.

      【讨论】:

        猜你喜欢
        • 2012-11-26
        • 1970-01-01
        • 2013-03-02
        • 2020-09-23
        • 1970-01-01
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多