python 第三方登录_【Python web 开发】social_django 集成第三方登录

 2023-09-19 阅读 29 评论 0

摘要:1、背景: 我们之前写的一些接口仅仅是知道微博授权的一个流程,要把第三方授权登录的用户的user_id 弄到我们的user_profile 中来才是 符合业务的需求的 怎么登陆social club?因此gitbub上已经有一些开源的第三方插件使用 social_app_django social-auth-app-dj

1、背景:

我们之前写的一些接口仅仅是知道微博授权的一个流程,要把第三方授权登录的用户的user_id 弄到我们的user_profile 中来才是 符合业务的需求的

怎么登陆social club?因此gitbub上已经有一些开源的第三方插件使用 social_app_django

social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块

目前流行的第三方登录都采用了OAuth2协议

1127434-20181117180459507-338628222.png

Python用户登录。使用文档:https://python-social-auth.readthedocs.io/en/latest/

因为我们使用的是django rest framwork ,所以可以点击这个查看文档介绍

1127434-20181117180749979-2088257678.png

2、安装第三方插件

如何安装python的第三方库、$ pip install social-auth-app-django

把'social_django 加入到app 里面,djando里面的开发一般都是基于app开发的

1127434-20181117181054064-759096477.png

再执行migrate,执行之前,先检查下database 的配置

python为什么叫爬虫、mysql 默认的数据库引擎是 MyISAM,但是由于social_app_django有些东西是MyISAM不支持的,因此我们要将database 设置为INNODB

1127434-20181117181454812-214617904.png

第二个问题,为什么不先进行migration ,而是跨过migration 直接migrate呢? 我们看源码知道 social_app_django 已经帮我们migration 好了

1127434-20181117181757764-1045858638.png

那我们就直接migrate:

1127434-20181117163848147-1877004122.png

查看数据库,发现多了一些表

1127434-20181117164032471-1393478195.png

我们继续看文档,看还需要配置一些什么东西

在Authentication backends¶ 里面加一些微博,或者qq的配置

1127434-20181117182136306-736398729.png

这些源码里面都有封装好的site-packages\social_core\backends ,我们直接配置就好了

1127434-20181117182323668-194238929.png

配置路由url

url('', include('social_django.urls', namespace='social'))

url 里面包含了这些:这里面封装的基本上都是我前几篇写的基于微博开放api的拿code,access_token ,其余还完善了很多,包括自动完成后续工作登录用户自动绑定,没有用户就新建用户等逻辑

1127434-20181117182633190-1606811795.png

再来项目的setting 里面配置第三方登录所需要用到的KEY, SECRET, 以及回调地址

1127434-20181117183156029-1968482901.png

基本的都做配置好了,然后在我们浏览器里面请求一下 127.0.0.1:8000/login/weibo

测试账号是没有点击授权的步骤,正式环境下是会弹出授权的页面的,如果用户有登录,则会自动绑定起来,没有就是登陆,登录成功跳转到配置的url页面

我们在表中看下 ,有记录我的user_id=2

1127434-20181117183713661-622729201.png

我们自己的用户表user_profile中查看

1127434-20181117183841653-32086103.png

这样就完成了第三方登录 与我们自己系统之间的用户绑定

由于social_app_django 是基于传统的django 编写的,我们是用的django rest framwork,判断用户是否登录的机制不一样,django rest framwork 是在cookie里面设置token的,判断用户是否登录 是在cookie里面去取name和token的,而传统的django 是在cookie里面设置sessionid的

因此我们要修改源码,来让我们的系统识别到这个第三方登录进来的用户,由于我还没做用户登录注册这快的逻辑,还没做,所以就先注释掉!

1127434-20181117184402529-1728268317.png

待续!!

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/77443.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息