首页 > 解决方案 > 使用 python-social-auth 时如何指定回调 uri 的主机名?

问题描述

我在 Django 中使用 python-social-auth,确切地说是 social-auth-app-django。该应用程序只是充当前端的单页应用程序的 API。服务于前端代理的服务器向后端请求,以避免 CORS、第三方 cookie 等出现任何问题。

这意味着您访问 example.com,SPA 加载并发出请求example.com/api,代理到api.example.com/api. example.com是一个 NodeJS 简单服务器,api.example.com是 Django 应用程序。

后端的 URL 如下所示:

urlpatterns = [
    path("admin/", admin.site.urls),
    path("social-auth/", include("social_django.urls", namespace="social")),
    path("api/", include(router.urls)),
    path("api-auth/", include("rest_framework.urls")),
    path("", views.home, name="home"),
]

api并被social-auth代理。

前端有一个链接可以启动身份验证过程/social-auth/login/facebook/。这有效,被重定向到 Facebook,但是当 Facebook 重定向回来而不是登陆example.com/social-auth/...它时,api.example.com/social-auth它会失败并出现错误:“会话值状态丢失。”

如何将redirect_uri发送到 Facebook 的内容指定example.com为默认值而不是默认值api.example.com

我知道一种可能的解决方案是跳过代理并处理 CORS/cookies/tokens,但我试图在这个 Stack Overflow 问题中让它与代理一起工作。

标签: pythondjangopython-social-authsocial-auth-app-django

解决方案


推荐阅读