OAuth实现腾讯微博第三方登录

前言

    还是得弱弱的写下这个技术的背后,大概是这个样子的,看到OAuth这个单词,我就想到了权限这个词,不知道为什么,又想起了第三方登录这个技术,于是自己脑补了一下,应该这两个东西是有关系的。再就是去动手查了查。

内容

    看了关于腾讯开发官方文档的好多文档,以及尝试了好多次创建个人的开发平台,但是都是在最后提交的时候,出现了错误,按照错误源头查官方文档,文档上说给某某发邮件即可。于是我就等到了现在,所以自己上网搜了一下,别人获取的appkeyappsecret,开心的开始玩弄这些代码。终于折腾出来了。个人感觉这个就是一个登录授权的过程,那么我自己把它理解为了两个步骤。


  • 第一个:申请腾讯开发平台,获取appkeyappsecret
  • 第二个:授权获取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));


小结

上面的东西,还是得实际实践体会比较深,加油!


感谢您的宝贵时间···




原文地址:https://www.cnblogs.com/zhoulitong/p/6412326.html