zoukankan      html  css  js  c++  java
  • 【Python web 开发】social_django 集成第三方登录

     1、背景:

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

    因此gitbub上已经有一些开源的第三方插件使用 social_app_django

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

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

    使用文档:https://python-social-auth.readthedocs.io/en/latest/

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

    2、安装第三方插件

    $ pip install social-auth-app-django

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

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

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

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

    那我们就直接migrate:

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

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

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

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

    配置路由url  

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

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

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

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

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

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

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

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

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

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

     待续!!

  • 相关阅读:
    Python 学习笔记 11.模块(Module)
    Python 学习笔记 8.引用(Reference)
    Python 学习笔记 9.函数(Function)
    Python 学习笔记 6.List和Tuple
    Python 学习笔记 4.if 表达式
    Python 学习笔记 2.自省
    Python 学习笔记 3.简单类型
    Python 学习笔记 7.Dictionary
    Python 学习笔记 5.对象驻留
    Python 学习笔记 10.类(Class)
  • 原文地址:https://www.cnblogs.com/yuanyuan2017/p/9975103.html
Copyright © 2011-2022 走看看