Django 如何强制重定向uri在python社交应用程序中使用HTTPS?

Django 如何强制重定向uri在python社交应用程序中使用HTTPS?,django,oauth-2.0,facebook-login,google-login,python-social-auth,Django,Oauth 2.0,Facebook Login,Google Login,Python Social Auth,我正在将django框架与python社交应用程序一起使用,尝试使用Facebook登录按钮登录时出错 我的应用程序由三个docker容器组成: Django应用程序 数据库 NGINX+SSL证书 这是我的错误: 身份验证过程已取消:URL被阻止:此重定向失败 因为重定向URI未在应用程序的客户端OAuth中列出 设置。确保客户端和Web OAuth登录处于打开状态,并添加所有 应用程序域作为有效的OAuth重定向URI。 大宗报价 这是我在尝试登录时可以看到的URL 正如我所看到的,问题在

我正在将django框架与python社交应用程序一起使用,尝试使用Facebook登录按钮登录时出错

我的应用程序由三个docker容器组成:

  • Django应用程序
  • 数据库
  • NGINX+SSL证书
  • 这是我的错误:

    身份验证过程已取消:URL被阻止:此重定向失败 因为重定向URI未在应用程序的客户端OAuth中列出 设置。确保客户端和Web OAuth登录处于打开状态,并添加所有 应用程序域作为有效的OAuth重定向URI。 大宗报价

    这是我在尝试登录时可以看到的URL

    正如我所看到的,问题在于重定向uri以HTTP开始,而不是以HTTPS开始

    Django==2.2
    social-auth-app-django==3.1.0
    social-auth-core==3.1.0
    
    我对这个问题的最佳猜测是,Django应用程序并不“知道”它在NGINX+SSL后面运行,而是使用HTTP协议而不是HTTPS生成重定向uri

    Facebook设置具有以HTTPS开头的正确重定向URI。这个问题并不局限于Facebook,谷歌的uri也有同样的问题


    如何强制python社交网站使用HTTPS?

    以下是帮助我的设置:

    django设置:

    # settings.py
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
    location / {
        # ... 
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    nginx设置:

    # settings.py
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
    location / {
        # ... 
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    

    来源:

    您应该寻找的是在Django应用程序的settings.py中添加以下行

    SOCIAL_AUTH_REDIRECT_IS_HTTPS = True
    
    通过这种方式重定向django social创建的uri,并包含https

    根据上面的回答,您所做的是将http通信重定向到https,如果您试图创建一个仅https的服务器,这仍然是一个问题