zoukankan      html  css  js  c++  java
  • DjangoRestFramework整合social-auth-app-django实现第三方登录

    1. 第三方登录原理介绍见上篇,第三方登录流程

    2. social-auth-app-django官方文档地址

    3. DjangoRestFramework整合social-auth-app-django实现第三方登录流程

      • 用户点击第三方登录链接进入微博登录页面
      • 用户输入用户名密码,获取授权码,授权服务器验证用户信息和客户端信息
      • 浏览器重定向到回调url,获取access_token
      • 根据access_token调接口获取用户信息
      • 首次登录:创建用戶,创建用户信息关联表
      • 第二次登录:已有用户认证
      • 重定向到第三方应用并实现登录
    4. 安装第三方库social-auth-app-django

      pip install social-auth-app-django
      
    5. 注册app

      INSTALLED_APPS = (
          ...
          'social_django',
          ...
      )
      
    6. 执行数据库迁移操作,创建数据库表

      python manage.py migrate
      
    7. 添加微信、QQ、微博backends到settings.py配置文件中

      AUTHENTICATION_BACKENDS = (
          'social_core.backends.weibo.WeiboOAuth2',
          'social_core.backends.weixin.WeixinOAuth2',
          'social_core.backends.qq.QQOAuth2',
          'django.contrib.auth.backends.ModelBackend',
      )
      
    8. 添加根路由到urls.py,这里主要有两个路由地址,login/...,主要是实现返回授权码的功能,complete/...,主要是实现后续获取access_token,创建用户,关联用户,认证和跳转登录功能

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

      screenshot_11.png

    9. 添加context_processors到template

      TEMPLATES = [
          {
              ...
              'OPTIONS': {
                  ...
                  'context_processors': [
                      ...
                      'social_django.context_processors.backends',
                      'social_django.context_processors.login_redirect',
                      ...
                  ]
              }
          }
      ]
      
    10. 添加应用key和secret到配置文件settins.py中

      SOCIAL_AUTH_TWITTER_KEY = 'foobar'
      SOCIAL_AUTH_TWITTER_SECRET = 'bazqux'
      
    11. settins.py中配置用户完成登录之后的跳转url

      SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'
      
    12. 前后端分离的项目中将token放进响应cookie中实现登录跳转之后自动登录
      screenshot_9.png
      screenshot_10.png

    13. 实现微博第三方登录,浏览器输入地址http://127.0.0.1:8000/login/weibo
      screenshot_14.png
      screenshot_15.png

  • 相关阅读:
    四则运算C语言程序
    雅思听听app
    What is 软件工程
    Python(Head First)学习笔记:六
    Python(Head First)学习笔记:五
    Python(Head First)学习笔记:四
    Python(Head First)学习笔记:三
    Python(Head First)学习笔记:二
    Python(Head First)学习笔记:一
    一名前端Web架构师的成长之路(转载)
  • 原文地址:https://www.cnblogs.com/iread9527/p/13138179.html
Copyright © 2011-2022 走看看