既然是進行微博開發,也許你會認為應該使用傳統型程式的驗證方式,但是微博是以web的形式展示在你開發的程式當中的,因而使用Web應用的驗證授權方式
授權的基本流程
(註:Client指第三方應用,Resource Owner指使用者,Authorization Server是我們的授權伺服器,Resource Server是API伺服器)
新浪支援4種Authorization Grant(也就是擷取授權的方式),分別是:授權頁方式(其中又分為Web應用和Javascript用戶端),使用者名稱密碼方式(類似於以前的xAuth),令牌重新整理方式(提供給夥伴用於處理Access Token到期的情況)
開發人員可以先瀏覽OAuth2.0的介面文檔,熟悉OAuth2的介面及參數的含義,然後我們根據應用情境各自說明如何使用OAuth2.0。 Web應用的驗證授權(Authorization Code)
基本流程
1. 引導需要授權的使用者到如下地址:
https://api.weibo.com/oauth2/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI
2. 如果使用者同意授權,頁面跳轉至 YOUR_REGISTERED_REDIRECT_URI/?code=CODE
3. 換取Access Token
https://api.weibo.com/oauth2/access_token?client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE
(其中client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET可以使用basic方式加入header中)
傳回值
{ "access_token":"SlAV32hkKG", "expires_in":3600 }
4. 使用獲得的OAuth2.0 Access Token調用API
介面介紹:
Class com.weibo.net.Weibo: 1. 擷取request token
|
擷取request token |
|
介面名稱 |
|
public RequestToken getRequestToken(Context context, String key, String secret, String callback_url); |
|
參數名稱 |
作用 |
|
context |
傳遞應用上下文環境,用於擷取當前網路狀態,彈出對話方塊等。 |
|
key |
分配給第三方用戶端的app key |
|
secret |
分配給第三方用戶端的app secret |
|
callback_url |
用於oauth authorize頁面回調的url |
|
返回結果 |
|
RequestToken:RequestToken封裝request tokens屬性類,繼承自Token,包含oauth_token, oauth_token_secret多個屬性。 |
2. 擷取access token
|
擷取acess token |
|
介面名稱 |
|
public AccessToken generateAcessToken(Context context, RequestToken requestToken) |
|
參數名稱 |
作用 |
|
context |
傳遞應用上下文環境,用於擷取當前網路狀態,彈出對話方塊等。 |
|
RequestToken |
用於存取oauth token和oauth secret的token類 |
|
返回結果 |
|
AccessToken: AccessToken封裝access tokens屬性類,繼承自Token,包含access_token, oauth_token_secret多個屬性。 |
3. 擷取Oauth2.0 的access token
|
|
介面名稱 |
|
Oauth2AccessToken getOauth2AccessToken(Context context, String app_key,
String app_secret, String usrname, String password) |
|
參數名稱 |
作用 |
|
context |
傳遞應用上下文環境,用於擷取當前網路狀態,彈出對話方塊等。 |
|
App_key |
Client_id,第三方應用的appkey |
|
App_secret |
Client_secret,第三方應用的appsecret |
|
Username |
微博使用者名稱稱 |
|
password |
微博使用者密碼 |
|
返回結果 |
|
Oauth2AccessToken: Oauth2AccessToken封裝tokens屬性類,繼承自Token,包含access_token, oauth_token_secret多個屬性。 |