python - 使用 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 问题中让它与代理一起工作。
解决方案
推荐阅读
- firebase - 如何在 Firebase 中的结帐会话几分钟后超时?
- r - 在 sfnetwork 图中包含简单的特征属性
- mysql - 创建新分支 GitLab CI/CD 时创建新数据库
- java - 转换时间(12 小时和 24 小时)
- python - 在 ploty dash 中将数据库时间添加为 x 轴
- javascript - 在对象列表中查找项目的条件索引
- python - 加载具有动态批量大小的 tf.data.Dataset
- azure - AKS 群集自动扩缩程序配置文件修改
- python - 如何知道产品最后一次更新 MongoD 的时间?
- gradle - Gradle IDE 支持