1. 程式人生 > >Android通過第三方登入理解oauth2.0機制

Android通過第三方登入理解oauth2.0機制

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個流程。


相關推薦

Android通過第三方登入理解oauth2.0機制

1. OAuth2.0介紹 說到第三方登入,離不開oauth2.0,oauth2.0是“使用者認證和授權的標準”,是從oauth1.0基礎上發展來的。下圖是oauth2.0六個過程分析圖,為了分析這6個流程,下面我們通過新浪微盤授權登入demo,詳細解析。 2. 執

php微信開放平臺--第三方網頁微信掃碼登入OAuth2.0

第一、OAuth2.0  OAuth(開放授權)是一個開放標準,允許使用者讓第三方應用訪問該使用者在某一網站上儲存的私密的資源(如照片,視訊,聯絡人列表),而無需將使用者名稱和密碼提供給第三方應用。  允許使用者提供一個令牌,而不是使用者名稱和密碼來訪問他們存放在特定服務提供者的資料。每一個令牌授權一個特定的

第三方登入:微信掃碼登入OAuth2.0

1、OAuth2.0   OAuth(開放授權)是一個開放標準,允許使用者讓第三方應用訪問該使用者在某一網站上儲存的私密的資源(如照片,視訊,聯絡人列表),而無需將使用者名稱和密碼提供給第三方應用。   允許使用者 提供一個令牌, 而不是使用者名稱和密碼來訪問他們存放

第三方登入 理解OAuth 2.0

作者: 阮一峰 OAuth是一個關於授權(authorization)的開放網路標準,在全世界得到廣泛應用,目前的版本是2.0版。 本文對OAuth 2.0的設計思路和執行流程,做一個簡明通俗的解釋,主要參考材料為RFC 6749。 一、應用場景 為了理解OA

理解Oauth2.0

OAuth2.0 理解 OAuth是一個關於授權(authorization)的開放網絡標準,在全世界得到廣泛應用,目前的版本是2.0版。一、名詞解釋 在詳細講解Oauth2.0之前,需要了解幾個專用名詞。 Third-party application: 第三方應用程序,本文中有稱作&q

Java架構-(十) 整合spring cloud雲架構 - SSO單點登入OAuth2.0登入認證(1)

之前寫了很多關於spring cloud的文章,今天我們對OAuth2.0的整合方式做一下筆記,首先我從網上找了一些關於OAuth2.0的一些基礎知識點,幫助大家回顧一下知識點: 一、oauth中的角色 client:呼叫資源伺服器API的應用 Oauth 2.0 Provide

Java架構-(十三) 整合spring cloud雲架構 - SSO單點登入OAuth2.0 根據token獲取使用者資訊(4)

上一篇我根據框架中OAuth2.0的使用總結,畫了SSO單點登入之OAuth2.0 登出流程,今天我們看一下根據使用者token獲取yoghurt資訊的流程: Java程式碼 我這裡只是簡單寫了一些登出的程式碼,我們會在後面的文章中詳細貼出所有程式碼供大家參考,而且會從建立

Java架構-(十二) 整合spring cloud雲架構 - SSO單點登入OAuth2.0 登出流程(3)

上一篇我根據框架中OAuth2.0的使用總結,畫了一個根據使用者名稱+密碼實現OAuth2.0的登入認證的流程圖,今天我們看一下logout的流程: Java程式碼 我這裡只是簡單寫了一些登出的程式碼,我們會在後面的文章中詳細貼出所有程式碼供大家參考,而且會從建立資料庫,到執

Java架構-(十一) 整合spring cloud雲架構 - SSO單點登入OAuth2.0登入流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是為了快速幫助大家認識OAuth2.0,閒話少說,我根據框架中OAuth2.0的使用總結,畫了一個簡單的流程圖(根據使用者名稱+密碼實現OAuth2.0的登入認證): 上面的圖很清楚的描述了當前登入login的流程,現在我們針對於log

android studio第三方登入分享

參照第三方登入的教程實現以下步驟 網址:https://developer.umeng.com/docs/66632/detail/66639?tdsourcetag=s_pcqq_aiomsg#h3--android-manifest-xml 建立一個專案,注意:專案包名一定要是soe

Android開發第三方登入--微信登入

QQ登入、微信登入,新浪微博登入資料獲取demo下載 http://download.csdn.net/detail/pkandroid/9903796 github地址 進入 https://github.com/HYVincent/Login 專案

(十一)Java springcloud B2B2C o2o多使用者商城 springcloud架構- - SSO單點登入OAuth2.0登入流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是為了快速幫助大家認識OAuth2.0,閒話少說,我根據框架中OAuth2.0的使用總結,畫了一個簡單的流程圖(根據使用者名稱+密碼實現OAuth2.0的登入認證):        上面的圖很清楚的描述了當前登入

(十三)Java springcloud B2B2C o2o多使用者商城 springcloud架構 - SSO單點登入OAuth2.0 根據token獲取使用者資訊(4)

上一篇我根據框架中OAuth2.0的使用總結,畫了SSO單點登入之OAuth2.0 登出流程,今天我們看一下根據使用者token獲取yoghurt資訊的流程: /** * 根據token獲取使用者資訊 * @param accessToken * @return * @

(十二)Java springcloud B2B2C o2o多使用者商城 springcloud架構-- SSO單點登入OAuth2.0 登出流程(3)

上一篇我根據框架中OAuth2.0的使用總結,畫了一個根據使用者名稱+密碼實現OAuth2.0的登入認證的流程圖,今天我們看一下logout的流程: /** * 使用者登出 * @param accessToken * @return */ @R

(十二)Java B2B2C多使用者商城 springboot架構-SSO單點登入OAuth2.0 登出流程(3)

上一篇我根據框架中OAuth2.0的使用總結,畫了一個根據使用者名稱+密碼實現OAuth2.0的登入認證的流程圖,今天我們看一下logout的流程: /** * 使用者登出 * @param accessToken * @return */ @R

微信公眾平臺開發——微信授權登入OAuth2.0

1、OAuth2.0簡介   OAuth(開放授權)是一個開放標準,允許使用者讓第三方應用訪問該使用者在某一網站上儲存的私密的資源(如照片,視訊,聯絡人列表),而無需將使用者名稱和密碼提供給第三方應用。   允許使用者提供一個令牌,而不是使用者名稱和密碼來訪問他們存放在特

(十三)java springboot b2b2c多使用者商城系統分析 - SSO單點登入OAuth2.0 根據token獲取使用者資訊(4)

上一篇我根據框架中OAuth2.0的使用總結,畫了SSO單點登入之OAuth2.0 登出流程,今天我們看一下根據使用者token獲取yoghurt資訊的流程: ​ /** * 根據token獲取使用者資訊 * @param accessToken * @return * @

(十二)java springboot b2b2c shop 多使用者商城系統原始碼- SSO單點登入OAuth2.0 登出流程(3)

上一篇我根據框架中OAuth2.0的使用總結,畫了一個根據使用者名稱+密碼實現OAuth2.0的登入認證的流程圖,今天我們看一下logout的流程: /** * 使用者登出 * @param accessToken * @return */

(十一)JAVA springboot ssm b2b2c多使用者商城系統 - SSO單點登入OAuth2.0登入流程(2)

上一篇是站在巨人的肩膀上去研究OAuth2.0,也是為了快速幫助大家認識OAuth2.0,閒話少說,我根據框架中OAuth2.0的使用總結,畫了一個簡單的流程圖(根據使用者名稱+密碼實現OAuth2.0的登入認證):        上面的圖很清

(十二)JAVA springcloud ssm b2b2c多使用者商城系統原始碼-SSO單點登入OAuth2.0 登出流程(3)

上一篇我根據框架中OAuth2.0的使用總結,畫了一個根據使用者名稱+密碼實現OAuth2.0的登入認證的流程圖,今天我們看一下logout的流程: /** * 使用者登出 * @param accessToken * @return */ @R