【问题标题】:Lost with django-social-auth and custom oauth2 backen迷失在 django-social-auth 和自定义 oauth2 后端
【发布时间】:2021-04-03 09:27:12
【问题描述】:

这可能不是一个很好的 stackoverflow 问题,因为我很迷茫,我认为我的问题看起来好像我没有做出任何努力。

我想从 Xero 获取用户的电子邮件,Xero 是一个专门允许这样做的云会计应用程序 (https://developer.xero.com/documentation/oauth2/sign-in)

当我创建一个 Xero“应用程序”来获取必要的凭据时,我需要提供一个 OAuth 2.0 重定向 URI,我认为这对于 oauth2 身份验证来说是非常常见甚至通用的。 我看不到如何将此 URL 提供给后端配置(BaseOAuth2 的子类)的示例。除了作为重定向 URL 之外,它还必须在 AUTHORIZATION_URL 中提供。

Xero URL 模板是https://login.xero.com/identity/connect/authorize?response_type=code&client_id=YOURCLIENTID&redirect_uri=YOURREDIRECTURI&scope=email&state=1234

我已经阅读了很多教程。我找不到任何关于添加自定义 oauth2 后端的信息,但在本教程中有 GitHub 和 Twitter 的示例:

https://simpleisbetterthancomplex.com/tutorial/2016/10/24/how-to-add-social-login-to-django.html

在这两种情况下,本教程都要求在身份验证器端定义应用程序时提供形式为 http://localhost:8000/oauth/complete/twitter/ 的回调 URL。

这是一个硬编码的、未记录的默认值吗?还是我需要在我的配置中的某个地方定义它?在本教程中,我在 github.py 或 twitter.py 的后端代码中看不到任何对回调 url 的引用。

所以我迷路了,因为我不知道我的 Django 应用程序处理来自 Xero 的重定向,如果我不告诉它重定向 URL 将是什么,而且我不知道自定义后端如何优雅地创建一个有效的auth URL,因为它需要提供重定向 URL。我找不到我能理解的文档,也无法从源代码中解决。

【问题讨论】:

  • 教程中提供了回调地址,即urls.py文件中的url(r'^oauth/', include('social_django.urls', namespace='social')),行。此端点包含与 Github、Twitter 或任何其他服务相关的所有这些回调 URL。

标签: django django-socialauth


【解决方案1】:

教程介绍了如何使用 python-social-auth 插件中已有的 OAuth 提供程序。查看provided 页面以获取可用集成列表。

您真正需要的是为 Xero 服务添加自定义提供程序插件。您可以使用this manual 添加新的后端。

【讨论】:

  • 谢谢。我最大的问题是不了解它是如何工作的,所以我从头开始使用 Xero 实现登录(获取代码、解码令牌、查找用户并进行登录)。现在我更详细地了解了它的工作原理,我将使用来自 python-social-auth 的自定义提供程序再次尝试。
猜你喜欢
  • 2013-03-02
  • 2014-11-02
  • 2014-10-21
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多