1. OAuth2.0介绍
说到第三方登录,离不开oauth2.0,oauth2.0是“用户认证和授权的标准”,是从oauth1.0基础上发展来的。下图是oauth2.0六个过程分析图,为了分析这6个流程,下面我们通过 新浪微盘 授权登录demo,详细解析。![](https://i-blog.csdnimg.cn/blog_migrate/7afd15757c2b5edc607248b5113b5329.png)
2. 运行新浪微盘SDK demo
运行新浪微盘( 开发者网站 )sdk demo,使用新浪微博账号授权,入下图进行操作:![](https://i-blog.csdnimg.cn/blog_migrate/b9c692fa513f958bf54376dd2eeb6f85.png)
3. 分析logcat日志信息
3.1 logcat信息
上面第2步运行demo,可以看到eclipse 的logcat打印很多信息,如下:
(1) https://auth.sina.com.cn/oauth2/authorize?
client_id=2330724462&redirect_uri=http%3A%2F%2Fvauth.appsina.com%2Fcallback1.php&display=mobile
(2)http://vauth.appsina.com/callback1.php?code=67db0ec6d0bac50253e254ff03a605fb&state=
(3) https://auth.sina.com.cn/oauth2/access_token?
client_id=2330724462&client_secret=04f81fc56cc936bfc8f0fa1cef285158&
grant_type=authorization_code&code=49ae713e40e740cdb7cf16c92ac7e2ed&
state=&redirect_uri=http%3A%2F%2Fvauth.appsina.com%2Fcallback1.php
client_id=2330724462&redirect_uri=http%3A%2F%2Fvauth.appsina.com%2Fcallback1.php&display=mobile
(2)http://vauth.appsina.com/callback1.php?code=67db0ec6d0bac50253e254ff03a605fb&state=
(3) https://auth.sina.com.cn/oauth2/access_token?
client_id=2330724462&client_secret=04f81fc56cc936bfc8f0fa1cef285158&
grant_type=authorization_code&code=49ae713e40e740cdb7cf16c92ac7e2ed&
state=&redirect_uri=http%3A%2F%2Fvauth.appsina.com%2Fcallback1.php
下面,我们一步步分析上面logcat信息。
3.2 打开H5授权页面
将上面第1步网址拷贝到浏览器,发现其实就是打开授权页面,如下图(浏览器的开发者视图显示的效果):![](https://i-blog.csdnimg.cn/blog_migrate/a27abc6c75c89431ba34b1d2696321c6.png)
3.3 授权回调
在3.2的页面中输入新浪微博账号和密码,授权登录,发现跳转到下面的页面,这个页面就是3.1中logcat信息的第2条,其实就是打开授权回调页面:![](https://i-blog.csdnimg.cn/blog_migrate/fb62edd6ac1586d0b12ea0936c679597.png)
3.4 获取token
3.1中第3条logcat信息,其实就是调用接口,传入3.3获取的参数code值,获取access_token,这个步骤我们可以通过Firefox浏览器的RESTClient接口测试插件来分析,如下:可以看到服务器返回access_token![](https://i-blog.csdnimg.cn/blog_migrate/8c360fa215396094161c1221816d0b44.png)
4. 分析OAuth2.0六个流程
上面分析了logcat的信息,现在我们再来看看OAuth2.0六个步骤:![](https://i-blog.csdnimg.cn/blog_migrate/8d140f9665ca0b65013cef9f4ea701d3.png)
4.1 六个角色
分析6个流程前,我们首先熟悉几个角色:Client :客户端,这里指的是新浪微盘SDK demo;
Resource Owner :资源拥有者,这里指的是授权登录账户;
Authorization Server :授权服务器,这里指的是新浪的服务器;
Resource Server :资源服务器,提供资源发服务器,这些资源比如用户名、相册等,这里的资源服务器指的是新浪服务器。
4.2 OAuth2.0六个流程
如上图:A :客户端发起授权请求,其实就是打开一个授权页面(3.1中的1);
B :用户(资源拥有者)授权后,跳转回调页,回传code值(3.1中的2)。
C :发起授权请求,获取access_token,其实就是使用B中的code,调用接口(3.1中的3)获取access_token。
D :授权服务器验证,如果通过返回access_token,详见3.4。
E :使用获得access_token申请获取资源,比如我们可以获取用户信息,如下:
https://api.weipan.cn/2/account/info?access_token=3a71ce6665v5t4K2xJtU236L9Vfce151
F :资源服务器返回资源,如下图返回用户信息:
![](https://i-blog.csdnimg.cn/blog_migrate/3aa88a200112c2d0af2bea21679a32b2.png)
以上就是OAuth2.0的6个流程。