DjangoRestFramework 使用 python-social-auth 实现第三方登录

本文详述如何在Django项目中使用social-auth-app-django实现网站A用户的无缝登录,包括安装配置、自定义后端、应用注册及实际流程演示。

本文为 social-auth-app-django 使用记录。(官方文档)

0. 前言

前提:有两个网站,记为网站A、网站B,两个网站有各自的用户系统,现在网站B要实现使网站A的用户无需注册直接登录自己的网站,这里就要用到第三方登录。

环境: Django == 3.x  social-auth-app-django == 4.0.0

1. 安装 

pip install social-auth-app-django

2. 使用

网站A该篇文章的 provider 项目,即 OAuth provider(提供方); 

创建 Django 项目(网站B),即 OAuth consumer(使用方),网站B目录树如下图:

├─manage.py
├─social
│  │  asgi.py
│  │  settings.py
│  │  urls.py
│  │  wsgi.py
│  └─ __init__.py
└─users
   │  admin.py
   │  apps.py
   │  backends.py
   │  models.py
   │  tests.py
   │  views.py
   └─ __init__.py

并进行相关配置: 

# social/settings.py
INSTALLED_APPS = [
    ...
    'users',
    'social_django',    # add
]

SOCIAL_AUTH_ADMIN_USER_SEARCH_FIELDS = ['username', 'email']

# SOCIAL_AUTH_要使用登录模块的名称大写_KEY
# 登录模块名对应为第三步中自定义后端的 name 属性
SOCIAL_AUTH_DJANGO_KEY = 'local'
SOCIAL_AUTH_DJANGO_SECRET = 'local'

# 登录成功后跳转页面
LOGIN_REDIRECT_URL = '/admin/'        

# 获取授权码的标识
PARTIAL_PIPELINE_TOKEN_NAME = 'code'

AUTHENTICATION_BACKENDS = (
    'users.backends.djangoOauth2',                  # 自定义第三方登录认证
    'django.contrib.auth.backends.ModelBackend',    # django 默认登录认证
)

# 获取用户详细的信息
SOCIAL_AUTH_PIPELINE = (
    'social_core.pipeline.social_auth.social_details',
    'social_core.pip
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值