OAuth实现腾讯微博第三方登录
前言
还是得弱弱的写下这个技术的背后,大概是这个样子的,看到OAuth这个单词,我就想到了权限这个词,不知道为什么,又想起了第三方登录这个技术,于是自己脑补了一下,应该这两个东西是有关系的。再就是去动手查了查。
内容
看了关于腾讯开发官方文档的好多文档,以及尝试了好多次创建个人的开发平台,但是都是在最后提交的时候,出现了错误,按照错误源头查官方文档,文档上说给某某发邮件即可。于是我就等到了现在,所以自己上网搜了一下,别人获取的appkey和appsecret,开心的开始玩弄这些代码。终于折腾出来了。个人感觉这个就是一个登录授权的过程,那么我自己把它理解为了两个步骤。
- 第一个:申请腾讯开发平台,获取appkey和appsecret。
- 第二个:授权获取accesstoken,然后授权成功后,就可以从第三方库里调用个人登录信息。
上网查了查,国内授权方式有很多种,其中我了解到的有:
1、Authorization Code方式;
据说这种授权方式专门提供给web开发用的,这种授权方式将咱们通过授权请求到的带有用户信息的调出许可的accesstoken,而且不用暴露用户的密码。
2、Implicit Grant方式;
这种方式允许accesstoken。
大家可能对这个accesstoken的重要性不太清楚,看下面这个图就知道,这个accesstoken代表着什么。
整体走向:
授权的过程:
通过上面的图解,这下是不是对这个东西更加了解了,其实当你认真观察过授权过程中地址的变化,你会发现,你对这个东西的了解更近了一步。
我做了一个demo,通过页面之间的跳转,你会发现我想表达的东西吗?
第三方登录页:
当前网址为:
http://localhost:62219/Home/About
授权界面:
当前网址为:
https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id=801152319&response_type=code&redirect_uri=http://localhost:62219/Tencent/Index
授权成功,调转界面:
当前网址为:
http://localhost:62219/Tencent/Index?code=8519295ab1b8bc64fba705384a466650&openid=F3237095EED6DA1FCDB5C027D5013B2E&openkey=F1281E05C8C424698A00ED5610129165&state=
看到这几个链接地址,大家试想一下,是不是我只是拼接想要的字符串地址,就可以达到页面调转的目的,大家可以看到,链接地址上面有上图说说到的code,但是accesstoken没有在链接地址上显示出来,其实它确实已经在授权服务器上获取到了。只不过,由于咱们用到的是code方式授权,所以安全性的考虑,没有将accesstoken暴露出来。下面给大家上代码,这里需要引用一个dll文件:dotNetDR_OAuth2,这里的代码部分主要展示网址拼接转换以及部分变量的获取。
第一个网络地址获取:
//生成主机头
var hostPath = AccessTokenToolkit.GenerateHostPath(Request.Url); //定义授权成功后返回的url地址
var tencentRedirectUrl = hostPath + Url.Action("Index", "Tencent");
第二个网络地址获取,在第一个基础上:
//
model.TencentLink = tencent.GenerateCodeUrl(tencentRedirectUrl);
第三个网络地址获取:
//
var redirectUrl = AccessTokenToolkit.GenerateHostPath(Request.Url) + Url.Action("Index"); var accessToken = _authCode.GetResult(_authCode.GenerateAccessTokenUrl(redirectUrl, code));
小结
上面的东西,还是得实际实践体会比较深,加油!
感谢您的宝贵时间···
OAuth实现腾讯微博第三方登录的更多相关文章
- django项目微博第三方登录
此处咱们用到的是 social_django,所以要把此应用注册到配置文件中, INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.a ...
- yii2微博第三方登录
原作者:杜文建 原博客:http://www.cnblogs.com/dwj97/p/6530568.html yii2微博第三方登录 微博登录是最常用的第三方账号登录之一.由于其网站用户量大,可 ...
- 微博第三方登录时,域名使用错误报错, Laravel \ Socialite \ Two \ InvalidStateException No message
使用微博第三方登录时,报错 Laravel \ Socialite \ Two \ InvalidStateException No message Laravel \Socialite \Two \ ...
- Django 2.0.4 微博第三方登录
三方登录逻辑 理解第三方登录的流程: 用户向本地应用商城发起请求,我要用微博进行登录 我们的商城凑一个url让用户跳转到第三方应用的url(微博的登录页面) 用户在该界面点击输入用户名密码之后,点击授 ...
- Django rest framework集成微博第三方登录
Django restframework 集成第三方登录(微博.微信.QQ等) 友情链接 python-social-auth-app官方文档 微博开放者平台 QQ开放者平台 准备工作 1.注册微博开 ...
- Unity利用Share SDK实现QQ、微信及微博第三方登录及定制内容分享(附代码)
最近因为公司的项目需要添加一些实用性的功能,需要添加第三方登录及分享,采用的是Mob的SDK,可以先到其官网下载对应的SDK 点击这里,为了方便后期进行数据统计和分析,所以可以先添加一个应用,添加成功 ...
- OAuth2.0 social_django微博第三方登录
python网站第三方登录,social-auth-app-django模块, social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块 目前流行的第三方 ...
- 微博第三方登录使用social_django实现显示登陆的用户名
首先修改social_soce源码,将用户信息添加进cookie 将其修改为: response = backend.strategy.redirect(url) payload = jwt ...
- 【Demo】QQ,github,微博第三方社交登录
本文主要讲解 集成 第三方社交账号登录 为什么会有这个需求? 主要是因为目前互联网的网站数量太多,如果在各个站点都注册一个账号 用户非常不容易记住每个账号的用户名和密码,并且非常难保证每个账号的密码足 ...
随机推荐
- vijos1369:难解的问题
描述 在你的帮助下,蔚蓝来到了埃及.在金字塔里,蔚蓝看到了一个问题,传说,能回答出这个问题的人就能受到埃及法老的祝福,可是蔚蓝日夜奋战,还是想不出来,你能帮帮他么?(XXX: 胡扯,教主怎么可能想不出 ...
- Spring单例Bean和线程安全
Spring的bean默认都是单例的,这些单例Bean在多线程程序下如何保证线程安全呢?例如对于Web应用来说,Web容器对于每个用户请求都创建一个单独的Sevlet线程来处理请求,引入Spring框 ...
- 第十四届华中科技大学程序设计竞赛决赛同步赛 F Beautiful Land(01背包,背包体积超大时)
链接:https://www.nowcoder.com/acm/contest/119/F来源:牛客网 Beautiful Land 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 1 ...
- Java-API:javax.servlet.http.HttpServletRequest
ylbtech-Java-API:javax.servlet.http.HttpServletRequest 1.返回顶部 1. javax.servlet.http Interface HttpSe ...
- 如何同时打开两个UltraEdit
高级—配置—应用程序布局—其它,勾上资源管理器选的文件将以独立的UltraEdit打开和允许多个UltraEdit
- python正则以及collections模块
正则 一.认识模块 什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.p ...
- Java中Return和Finally执行顺序的实现
下面这段代码的执行结果是怎样的呢? publc int test(){ int x; try{ x = 1; return x; }catch(Exception e){ x = 2; return ...
- Json-lib 进行java与json字符串转换之一
这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下. 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.J ...
- 问题:C#打开一个文本文档往里面写数据,没有就新建文档 ;结果:c#FileStream文件读写(转)
FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或 StreamWriter执行这些功能.这是因为FileStream ...
- elasticsearch的功能及适用场景(2)
1.Elasticsearch的功能 (1)分布式的搜索引擎和数据分析引擎 搜索:百度,网站的站内搜索,IT系统的检索数据分析:电商网站,最近7天牙膏这种商品销量排名前10的商家有哪些:新闻网站,最近 ...