第三方登录流程

第三方登录流程

  1. 什么是OAuth2?

    • OAuth是一个开放标准,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头像、照片、视频等),而在这个过程中无需将用户名和密码提供给第三方应用。实现这一功能是通过提供一个令牌(token),而不是用户名和密码来访问他们存放在特定服务提供者的数据。采用令牌(token)的方式可以让用户灵活的对第三方应用授权或者收回权限。

    • OAuth2 是 OAuth 协议的下一版本,但不向下兼容 OAuth 1.0。传统的Web开发登录认证一般都是基于session,但是在前后端分离的架构中继续使用session就会有许多不便,因为移动端(Android、iOS、微信小程序等)要么不支持 cookie(微信小程序),要么使用非常不便,对于这些问题,使用OAuth2认证都能解决。

    • 简单来说,OAuth就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用

    • 我们在互联网应用中最常见的OAuth2就是各种第三方登录,例如QQ授权登录、微信授权登录、微博授权登录、GitHub 授权登录等等。

    • OAuth2协议一共支持4种不同的授权模式,授权码模式,简化模式,密码模式,客户端模式,其中授权码模式是最安全并且使用最广泛的一种模式,这里介绍授权码模式

  2. 第三方登录流程图

    • 关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resource Owner指用户,Authorization Server是授权服务器,Resource Server是API服务器

  3. DjangoRestFramework整合微博第三方登录流程

    • 用户点击第三方登录链接进入微博登录页面
    • 用户输入用户名密码,获取授权码,授权服务器验证用户信息和客户端信息
    • 浏览器重定向到回调url,获取access_token
    • 根据access_token调接口获取用户信息
    • 首次登录:创建用戶,创建用户信息关联表
    • 第二次登录:已有用户认证
    • 重定向到第三方应用并实现登录
  4. 根据微博开放平台文档调用微博OAuth2.0的接口获取access_token和对应的用户信息

    • 创建web网站应用
      screenshot_6.png

    • 点击我的应用,进入应用,点击应用信息,测试信息,创建测试账号
      screenshot.png

    • 记录App key, App Secret
      screenshot_1.png

    • 配置回调url
      screenshot_2.png

    • 打开微博第三方登录接口文档
      screenshot_3.png

    • 调用第三方登录链接跳转到微博登录页面,并使用使用测试账号登录
      screenshot_4.png

    • 获取授权码

    screenshot_5.png

    • 根据授权码获取access_token
      screenshot_7.png

    • 使用access_token获取用户基本信息
      screenshot_8.png

posted @ 2020-06-14 21:12  iread9527  阅读(2070)  评论(0编辑  收藏  举报