OAUTH協議為用戶資源的授權提供了一個安全的、開放而又簡易的標準。與以往的授權方式不同之處是OAUTH的授權不會使第三方觸及到用戶的帳號信息(如用戶名與密碼),即第三方無需使用用戶的用戶名與密碼就可以申請獲得該用戶資源的授權,因此OAUTH是安全的。oAuth是Open Authorization的簡寫。
1.成為新浪的開發者(加入新浪微博的開發陣營)
* 注冊一個微博帳號,登錄http://open.
weibo.com帳號:xxxxxx
密碼:xxxxxx
* 填寫開發者的個人信息(比如姓名、出生日期、上傳身份證)
2.創建應用
* 假設應用名稱叫做“xx微博”
* 應用創建完畢,默認就進入“開發”階段,就具備了授權的資格
* 應用相關數據
App Key:3145626526 // 應用的唯一標識
App Secret:ee9de4d2431be061b22fe328332a1111
Redirect URI:http://www.
baidu.com3.用戶對“xx微博”進行資源授權----OAuth授權2.0
1> 獲取未授權的Request Token : 展示服務器提供商提供的登錄頁面
* URL : https://api.
weibo.com/oauth2/authorize* 參數
client_id true string 申請應用時分配的AppKey // 得知道給哪個應用授權
redirect_uri true string 授權回調地址 // 授權成功后跳轉到哪個頁面
2> 獲取授權過的Request Token
* 授權成功后,自動跳轉到回調頁面,比如
http://www.
baidu.com/?code=eabdc03cc4cc51484111b1cfd9c4cd0b// 新浪會在回調頁面后面拼接一個參數:授權成功后的Request Token
3> 根據授權過的Request Token換取一個Access Token
* URL : https://api.
weibo.com/oauth2/access_token* 參數
client_id true string 申請應用時分配的AppKey。
client_secret true string 申請應用時分配的AppSecret。
grant_type true string 請求的類型,填寫authorization_code
code true string 調用authorize獲得的code值。
redirect_uri true string 回調地址,需需與注冊應用里的回調地址一致
* 返回結果
{
"access_token" = "2.00vWf4GEUSKa7D739148f7608SXA9B";
"expires_in" = 157679999;
"remind_in" = 157679999;
uid = 3758830533;
}
// uid == user_id == 當前登錄用戶的ID == 用戶的唯一標識
{
"access_token" = "2.00vWf4GEUSKa7D739148f7608SXA9B";
"expires_in" = 157679999;
"remind_in" = 157679999;
uid = 3758830533;
}
* access_token和uid的去唄
access_token : 1個用戶給1個應用授權成功后,就獲得對應的1個access_token,作用是:允許1個應用訪問1個用戶的數據
uid:1個用戶對應1個uid,每1個用戶都有自己唯一的uid
舉例:
張三
李四
應用1
應用2
張三給應用1、應用2授權成功了:1個uid、2個access_token
李四給應用2授權成功了:1個uid、1個access_token
上面操作:產生了2個uid,3個access_token
二、授權過程中常見錯誤:
1.invalid_request
1> 沒有傳遞必填的請求參數
2> 請求參數不對
3> URL中間留有空格
2.invalid_client
1> client_id的值傳遞錯誤(AppKey不對)
3.redirect_uri_mismatch
1> 回調地址不對
三、授權帳號注意