Android通过第三方登录理解oauth2.0机制

1. OAuth2.0介绍

说到第三方登录,离不开oauth2.0,oauth2.0是“用户认证和授权的标准”,是从oauth1.0基础上发展来的。下图是oauth2.0六个过程分析图,为了分析这6个流程,下面我们通过 新浪微盘 授权登录demo,详细解析。
Android通过第三方登录理解oauth2.0机制_第1张图片

2. 运行新浪微盘SDK demo

运行新浪微盘( 开发者网站 )sdk demo,使用新浪微博账号授权,入下图进行操作:
Android通过第三方登录理解oauth2.0机制_第2张图片

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步网址拷贝到浏览器,发现其实就是打开授权页面,如下图(浏览器的开发者视图显示的效果):
Android通过第三方登录理解oauth2.0机制_第3张图片

3.3 授权回调

在3.2的页面中输入新浪微博账号和密码,授权登录,发现跳转到下面的页面,这个页面就是3.1中logcat信息的第2条,其实就是打开授权回调页面:
Android通过第三方登录理解oauth2.0机制_第4张图片

3.4 获取token

3.1中第3条logcat信息,其实就是调用接口,传入3.3获取的参数code值,获取access_token,这个步骤我们可以通过Firefox浏览器的RESTClient接口测试插件来分析,如下:可以看到服务器返回access_token
 
Android通过第三方登录理解oauth2.0机制_第5张图片

4. 分析OAuth2.0六个流程

上面分析了logcat的信息,现在我们再来看看OAuth2.0六个步骤:
Android通过第三方登录理解oauth2.0机制_第6张图片

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 :资源服务器返回资源,如下图返回用户信息:
Android通过第三方登录理解oauth2.0机制_第7张图片
 
以上就是OAuth2.0的6个流程。


本文版权归传智播客 Android培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客Android培训学院
首发: http://www.itcast.cn/android/

你可能感兴趣的:(Android)