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类的__repr__方法
    元素定位之css选择器(1)
    selenium-find_element相关内容
    selenium-模块概述(1)
    元素定位之css选择器(2)
    css笔记
    html笔记
    html、css、javascript之间的关系
    去除提示“Chrome正在受到自动软件的控制”
    Python3+RobotFramework+pycharm环境搭建
  • 原文地址:https://www.cnblogs.com/yuanyuan2017/p/9975103.html
Copyright © 2011-2022 走看看