Zho*_*ndr 3 django google-login oauth-2.0 facebook-login python-social-auth
我正在使用带有 python-social-app 的 django 框架,并且在尝试使用 Facebook 登录按钮登录时出错。
我的应用程序由三个 docker 容器组成:
这是我的错误:
身份验证过程已取消:URL 已阻止:此重定向失败,因为重定向 URI 未在应用程序的客户端 OAuth 设置中列入白名单。确保客户端和 Web OAuth 登录已打开,并将您的所有应用程序域添加为有效的 OAuth 重定向 URI。块引用
这是我在尝试登录时可以看到的 URL
正如我所看到的,问题是 redirect_uri 以 HTTP 而不是 HTTPS 开头。
Django==2.2
social-auth-app-django==3.1.0
social-auth-core==3.1.0
Run Code Online (Sandbox Code Playgroud)
我对这个问题的最佳猜测是 Django 应用程序不“知道”它在 NGINX+SSL 后面运行,并使用 HTTP 协议而不是 HTTPS 生成 redirect_uri。
Facebook 设置具有以 HTTPS 开头的正确重定向 URI。这个问题不是 Facebook 特有的,Google 的 redirect_uri 也有同样的问题。
如何强制 python-social 使用 HTTPS?
小智 10
您应该寻找的是在 Django 应用程序的 settings.py 中添加以下行。
SOCIAL_AUTH_REDIRECT_IS_HTTPS = True
Run Code Online (Sandbox Code Playgroud)
这种方式由 django social 创建的 redirect_uri 包含 https。
根据上面的答案,您所做的是将 http 流量重定向到 https,如果您尝试创建仅限 https 的服务器,这仍然是一个问题。
这是对我有帮助的设置:
Django 设置:
# settings.py
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
Run Code Online (Sandbox Code Playgroud)
nginx 设置:
location / {
# ...
proxy_set_header X-Forwarded-Proto $scheme;
}
Run Code Online (Sandbox Code Playgroud)
来源:如何使用 Django/nginx 部署仅支持 HTTPS 的站点?
| 归档时间: |
|
| 查看次数: |
1830 次 |
| 最近记录: |