丢失了 django-social-auth 和自定义 oauth2 后端

问题描述

这可能不是一个很好的 stackoverflow 问题,因为我太迷茫了,我想我的问题看起来就像我没有努力一样。

我想从 Xero 获取用户的电子邮件,Xero 是一款专门允许执行此操作的云会计应用 (https://developer.xero.com/documentation/oauth2/sign-in)

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

Xero 网址模板为 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 的引用。

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

解决方法

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

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