• 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

  • 相关阅读:
    PATA 1071 Speech Patterns.
    PATA 1027 Colors In Mars
    PATB 1038. 统计同成绩学生(20)
    1036. 跟奥巴马一起编程(15)
    PATA 1036. Boys vs Girls (25)
    PATA 1006. Sign In and Sign Out (25)
    读取web工程目录之外的图片并显示
    DOS命令
    java连接oracle集群
    servlet
  • 原文地址:https://www.cnblogs.com/iread9527/p/13138179.html
Copyright © 2020-2023  润新知