IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django集成第三方登陆(social-django) -> 正文阅读

[Python知识库]Django集成第三方登陆(social-django)

第三方开发平台网址

第三方登陆需要去官方的开放平台去申请,获得必要的参数,以下是各个官网的开发平台网址:
qq: https://connect.qq.com/
weixin:https://open.weixin.qq.com/
weibo:https://open.weibo.com/
需要去创建应用获得相关的值

使用social_django实现第三方登陆

我们用social_django第三方库来实现第三方登录

github地址: https://github.com/python-social-auth/social-app-django

支持哪些第三平台

在这里插入图片描述

下载第三包:

pip install social-auth-app-django

INSTALL_APP中配置

'social_django',

生成表:

只需要做migrate,因为migration的文件已经生成好了,我们在源码中可以看到

 python manage.py migrate

可以看到数据库中多了五张表

在这里插入图片描述

修改settings文件

添加到AUTHENTICATION_BACKENDS中

在这里插入图片描述

AUTHENTICATION_BACKEND=(
    #自定义用户认证
    'apps.user.views.CustomBackend',
    
    'django.contrib,auth.backends.ModelBackend',
    'social_core.backends.weibo.WeiboOAuth2',
    'social_core.backends.qq.QQOAuth2',
    'social_core.backends.weixin.WeixinOAuth2',
)

settings里面TEMPLATES添加:

  'social_django.context_processors.backends',
  'social_django.context_processors.login_redirect',

在这里插入图片描述

配置url

注意:自己的网站登陆地址后面需要加$否则会和第三方登录发生冲突

# 第三方登录
path('', include('social_django.urls', namespace='social')),
# jwt认证接口,自己网站登陆访问的地址
url('^login/$', obtain_jwt_token),

第三方登陆的地址可以在源码中看到:选择的什么第三方backend就会变
在这里插入图片描述

APP Secret和App key配置,settings里面

# 第三方登录,里面的值是你的开放平台对应的值
SOCIAL_AUTH_WEIBO_KEY = 'xxxxxxx'
SOCIAL_AUTH_WEIBO_SECRET = 'xxxxxx'

SOCIAL_AUTH_QQ_KEY = 'xxxxxxx'
SOCIAL_AUTH_QQ_SECRET = 'xxxxxxx'

SOCIAL_AUTH_WEIXIN_KEY = 'xxxxxxx'
SOCIAL_AUTH_WEIXIN_SECRET = 'xxxxxxx'


#登录成功后跳转到首页
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index'

这样就成功登陆了但是因为是前后端分离项目,并没有实现状态保持

实现状态保持

修改源码:
登录成功跳到首页,发现还处于未登录状态,我们需要对源码做修改

找到这个文件social_core/actions.py进行修改

原始代码

return backend.strategy.redirect(url)

在这里插入图片描述
修改为

# 修改源码适配drf
    response = backend.strategy.redirect(url)
    #获取用户
    payload = jwt_payload_handler(user)
    # 设置cookie
    response.set_cookie("name",user.name if user.name else user.username, max_age=24*3600)
    response.set_cookie("token", jwt_encode_handler(payload), max_age=24*3600)
    
    return response

在这里插入图片描述

这样就成功登陆了

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:07:23  更:2022-09-04 01:09:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:28:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码