1. OAuth2.0介绍
说到第三方登录,离不开oauth2.0,oauth2.0是“用户认证和授权的标准”,是从oauth1.0基础上发展来的。下图是oauth2.0六个过程分析图,为了分析这6个流程,下面我们通过
新浪微盘授权登录demo,详细解析。
2. 运行新浪微盘SDK demo
运行新浪微盘(
开发者网站)sdk demo,使用新浪微博账号授权,入下图进行操作:
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
下面,我们一步步分析上面logcat信息。
3.2 打开H5授权页面
将上面第1步网址拷贝到浏览器,发现其实就是打开授权页面,如下图(浏览器的开发者视图显示的效果):
3.3 授权回调
在3.2的页面中输入新浪微博账号和密码,授权登录,发现跳转到下面的页面,这个页面就是3.1中logcat信息的第2条,其实就是打开授权回调页面:
3.4 获取token
3.1中第3条logcat信息,其实就是调用接口,传入3.3获取的参数code值,获取access_token,这个步骤我们可以通过Firefox浏览器的RESTClient接口测试插件来分析,如下:可以看到服务器返回access_token
4. 分析OAuth2.0六个流程
上面分析了logcat的信息,现在我们再来看看OAuth2.0六个步骤:
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:资源服务器返回资源,如下图返回用户信息:
以上就是OAuth2.0的6个流程。