教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

Android培訓(xùn)實(shí)戰(zhàn)教程之通過(guò)第三方登錄理解oauth2.0機(jī)制

更新時(shí)間:2015年12月28日15時(shí)12分 來(lái)源:傳智播客Android培訓(xùn)學(xué)院 瀏覽次數(shù):


 

1. OAuth2.0介紹

說(shuō)到第三方登錄,離不開(kāi)oauth2.0,oauth2.0是“用戶(hù)認(rèn)證和授權(quán)的標(biāo)準(zhǔn)”,是從oauth1.0基礎(chǔ)上發(fā)展來(lái)的。下圖是oauth2.0六個(gè)過(guò)程分析圖,為了分析這6個(gè)流程,下面我們通過(guò)新浪微盤(pán)授權(quán)登錄demo,詳細(xì)解析。

2. 運(yùn)行新浪微盤(pán)SDK demo

運(yùn)行新浪微盤(pán)(開(kāi)發(fā)者網(wǎng)站)sdk demo,使用新浪微博賬號(hào)授權(quán),入下圖進(jìn)行操作:

3. 分析logcat日志信息

3.1 logcat信息

       上面第2步運(yùn)行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 打開(kāi)H5授權(quán)頁(yè)面

將上面第1步網(wǎng)址拷貝到瀏覽器,發(fā)現(xiàn)其實(shí)就是打開(kāi)授權(quán)頁(yè)面,如下圖(瀏覽器的開(kāi)發(fā)者視圖顯示的效果):

3.3 授權(quán)回調(diào)

在3.2的頁(yè)面中輸入新浪微博賬號(hào)和密碼,授權(quán)登錄,發(fā)現(xiàn)跳轉(zhuǎn)到下面的頁(yè)面,這個(gè)頁(yè)面就是3.1中l(wèi)ogcat信息的第2條,其實(shí)就是打開(kāi)授權(quán)回調(diào)頁(yè)面:

3.4 獲取token

3.1中第3條logcat信息,其實(shí)就是調(diào)用接口,傳入3.3獲取的參數(shù)code值,獲取access_token,這個(gè)步驟我們可以通過(guò)Firefox瀏覽器的RESTClient接口測(cè)試插件來(lái)分析,如下:可以看到服務(wù)器返回access_token
 

4. 分析OAuth2.0六個(gè)流程

上面分析了logcat的信息,現(xiàn)在我們?cè)賮?lái)看看OAuth2.0六個(gè)步驟:

4.1 六個(gè)角色

分析6個(gè)流程前,我們首先熟悉幾個(gè)角色:
Client:客戶(hù)端,這里指的是新浪微盤(pán)SDK demo;
Resource Owner:資源擁有者,這里指的是授權(quán)登錄賬戶(hù);
Authorization Server:授權(quán)服務(wù)器,這里指的是新浪的服務(wù)器;
Resource Server:資源服務(wù)器,提供資源發(fā)服務(wù)器,這些資源比如用戶(hù)名、相冊(cè)等,這里的資源服務(wù)器指的是新浪服務(wù)器。

4.2 OAuth2.0六個(gè)流程

如上圖:
A:客戶(hù)端發(fā)起授權(quán)請(qǐng)求,其實(shí)就是打開(kāi)一個(gè)授權(quán)頁(yè)面(3.1中的1);
B:用戶(hù)(資源擁有者)授權(quán)后,跳轉(zhuǎn)回調(diào)頁(yè),回傳code值(3.1中的2)。
C:發(fā)起授權(quán)請(qǐng)求,獲取access_token,其實(shí)就是使用B中的code,調(diào)用接口(3.1中的3)獲取access_token。
D:授權(quán)服務(wù)器驗(yàn)證,如果通過(guò)返回access_token,詳見(jiàn)3.4。
E:使用獲得access_token申請(qǐng)獲取資源,比如我們可以獲取用戶(hù)信息,如下:
      
https://api.weipan.cn/2/account/info?access_token=3a71ce6665v5t4K2xJtU236L9Vfce151
 
F:資源服務(wù)器返回資源,如下圖返回用戶(hù)信息:
 
以上就是OAuth2.0的6個(gè)流程。


本文版權(quán)歸傳智播客Android培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客Android培訓(xùn)學(xué)院
首發(fā):http://metathetuscanyresort.com/android/
0 分享到:
和我們?cè)诰€(xiàn)交談!