基于vue实现微博三方登录流程解析
作者:周晓楠 发布时间:2024-05-03 15:08:42
1.微博三方登录流程
1.1 前端获取认证code
1.在Vue页面加载时 动态发送请求获取微博授权url
2.django收到请求的url后,通过微博 应用ID(client_id)和回调地址(redirect_uri) 动态 生成授权url返回给Vue
3.当用户点击上面的url进行扫码,授权成功会 跳转我们的回调界面并附加code参数
4.Vue获取到微博返回的code后,会 将code发送给django后端 (上面的redirect_uri)
1.2 获取微博access_token
后端获取code后,结合client_id、client_secret、redirect_uri参数进行传递,获取微博access_token
1.3 获取微博用户基本信息并保存到数据库
使用获得的access_token调用获取用户基本信息的接口, 获取用户第三方平台的基本信息
用户基本信息 保存到数据库,然后关联本地用户 ,然后将用户信息返回给前端
1.4 生成token给Vue
django后端借助微博认证成功后,可以 使用JWT生成token ,返回给Vue
Vue将token存储到localStorage中 ,以便用户访问其他页面进行身份验证
2.第三方登录与本地登录的关联(三种情况)
2.1 情况1: 本地未登录,第一次登录第三方
此时相当于注册,直接把第三方信息拉取来并注册成本地用户就可以了,并建立本地用户与第三方用户
(openid)的绑定关系
2.2 情况2:本地未登录,再次登录第三方
此时用户已注册,获取到openid后直接找出对应的本地用户即可
2.3 情况3:本地登录,并绑定第三方
这个只要将获取到的openid绑定到本地用户就可以了
3.oauth认证原理
OAuth是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源,而无需将用户名和密码提供给第三方应用。
OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。这个code如果能出三方换取到数据就证明这个用户是三方真实的用户
4.为什么使用三方登录
服务方希望用户注册, 而用户懒得填注册时的各种信息(主要是为了保证用户的唯一性,各种用户名已占用,密码格式限制).
而像微信, QQ, 微博等几乎每个人都会安装的应用中用户肯定会在其中某一个应用中已经注册过,证明该用户在已经注册的应用中的唯一性.
第三方登录的实质就是在授权时获得第三方应用提供的代表了用户在第三方应用中的唯一性的openid.并将openid储存在第三方服务控制的本地储存.
来源:https://www.cnblogs.com/ngngng/p/13799575.html


猜你喜欢
- 为什么需要线程池呢? 设想一下,如果我们使用有任务就开启
- 前言vim是个伟大的编辑器,不仅在于她特立独行的编辑方式,还在于她强大的扩展能力。然而,vim自身用于写插件的语言vimL功能有很大的局限性
- 引言一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点:1、不开源,价格贵2、软件容量大。一般3G以上,
- 一、进入pycharm二、步骤1、开始点击pycharm左上角的file,找到python interpreter,点击右边的设置(长得像齿
- 这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。1 如何打印更易读的类不推荐方式class Poin
- 本文实例讲述了Python编程修改MP3文件名称的方法。分享给大家供大家参考,具体如下:最近刚刚开始学习Python,顺便锻炼思维写的一个小
- 本文实例讲述了Python 类属性与实例属性,类对象与实例对象用法。分享给大家供大家参考,具体如下:demo.py(类属性,所有实例对象共用
- 前言本专栏将非常细致的讲解相关与计算机视觉OpenCV的相关知识即操作,非常的简单易懂。本文主要讲解相关与计算机视觉的相关入门内容,关于图像
- 编译安装全是坑……第一遍装完无法使用pip,报错找不到ssl模块。各种报错:pip is configured with locations
- PyCharm设置数据库,查询数据库语句1、首先先安装BataBase数据插件2、打开DB Navigator 打开DataBase视图3、
- 在数据分析中有时候需要自己定义分组规则 这里简单介绍一下用一个字典实现分组people=DataFrame( np.random
- 很多应用要用到TreeView来显示组织机构,以下演示TreeView如何与数据库进行绑定。数据库结构如下(递归现实):id(guid)&n
- 如果你现在正在使用Restful API,并且你需要通过web项目来构建json格式字符串的响应,那么这篇文章将帮助你使用javascrip
- 1.列表(本部分内容出入官方文档)对于这个功能,微信小程序中并没有提供类似于Android中listview性质的控件,所以我们需要使用 w
- 关于IE9,微软逐渐提供越来越多的内容。很多人想知道IE9有多少模式和渲染引擎,今天IE项目主管Marc Silbey就此问题进行了解答。S
- 在使用SQL Server 的过程,中由于经常需要从多个不同地点将数据集中起来或向多个地点复制数据,所以数据的导出,导入是极为常见的操作.我
- 很久都没写 Flask 代码相关了,想想也真是惭愧,然并卵,这次还是不写 Flask 相关,不服你来打我啊(就这么贱,有本事咬我啊这次我来写
- 1,filesize()函数返回错误的值。 使用curl将某个页面下载到本地时,需要将下载到的临时文件tmpHtml.txt的内容读取到一个
- 本文介绍MySQL与Redis缓存的同步的两种方案方案1:通过MySQL自动同步刷新Redis,MySQL触发器+UDF函数实现方案2:解析
- 使用python生成随机图片验证码,需要使用pillow模块1.安装pillow模块pip install pillow2.pillow模块