使用 django-allauth 启用 oauth 登录,但使用自定义提供程序

Posted

技术标签:

【中文标题】使用 django-allauth 启用 oauth 登录,但使用自定义提供程序【英文标题】:Enable oauth login with django-allauth but a custom provider 【发布时间】:2016-10-08 00:12:20 【问题描述】:

我已经使用 django-oauth-toolkit 构建了一个 oauth 提供程序。

我现在想允许我的客户端应用程序的用户通过此提供程序登录。

我的理解是django-allauth 是实现此目的的理想工具。

我看到 django-allauth 对每个提供程序都有一个特殊的文件夹,在这个文件夹中有一个特殊的文件,叫做provider.py。例如,this 是 github 提供程序的文件夹。

我是否应该创建类似于此文件夹的内容,特别是为我的自定义提供程序?还是有更简单/更好的方法来做到这一点?

【问题讨论】:

您好!我刚刚开始一个新项目并且遇到类似的问题,我想将 django-oauth-toolkit 用于提供者,将 django-allauth 用于消费者。您是否找到任何有关此的教程或文档? 很遗憾没有:( 感谢您的回复。 @Brachamul 你找到 Django OAuth 客户端的解决方案了吗? github.com/raphaelyancey/django-oauth2-example 【参考方案1】:

根据文档所说,它会根据INSTALLED_APPS 发现新的提供者。因此,您将需要一个具有相同结构的 Django 应用程序,是的并包含一个providers.py。因此,您应该能够使用新应用或现有应用。

这是来自docs:

当现有提供商不能完全满足您的需求时,您可以 发现自己需要自定义提供程序。

这可以通过继承现有的提供者并制作 你在那里的改变。提供者被定义为 django 应用程序,所以 通常定制一个将意味着在 您的项目,包含您自定义的 urls.py、views.py 和 provider.py 文件。您可以自定义的行为超出了 本文档的范围。

另外,关于providers.py 文件内容的注释:

在您的 provider.py 文件中,您需要公开提供程序类 通过使用名为 provider_classes 的模块级属性 列表中的自定义类。这允许您的自定义提供程序 根据 INSTALLED_APPS 设置正确注册。

【讨论】:

【参考方案2】:

这是一篇解释该主题的有趣文章:

https://raphaelyancey.fr/en/2018/05/28/setting-up-django-oauth2-server-client.html

【讨论】:

以上是关于使用 django-allauth 启用 oauth 登录,但使用自定义提供程序的主要内容,如果未能解决你的问题,请参考以下文章

使用 django-allauth 时如何自定义用户配置文件

django-allauth 检索头像头像

如何使用 django-allauth 访问用户名和配置文件

如何使用 django-allauth 访问用户名和配置文件

django-allauth:如何修改电子邮件确认 url?

使用 django-allauth 额外数据添加自定义用户