OAuth容許用戶提供一個訪問標記(專業點叫作令牌)給第三方網站,一個訪問標記(專業點叫作令牌)對應一個特定的第三方網站,同時該訪問標記(專業點叫作令牌)只能在特定的時間內訪問特定的資源ios
說白了就是:也就是說用戶在訪問第三方web或應用的時候,第三方在不知道用戶的帳號和密碼的狀況下 通過用戶受權後就能夠獲取用戶在服務商哪裏存儲的文章,微博信息等等信息web
1、OAuth受權必須通過三個步驟api
第一步:獲取未受權的Request Token (請求標記) 跳轉到服務商的登陸頁面安全
第二步:獲取用戶受權Request Token(請求標記) 用戶輸入帳號密碼進行登陸受權服務器
第三步:用受權過的Request Token(請求標記) 換取Access Token (訪問標記)app
以上三個步驟是OAuth受權的必須步驟 ,可能不少公司的受權方式各有不一樣,可是大體步驟是同樣的測試
下面以新浪微博爲例子 介紹下如何進行OAuth受權:
網站
1.首先你要成爲新浪的開發者 點擊這裏進入開發者網站:http://open.weibo.comui
進入後註冊一個帳號 添加開發者我的信息 ,你能夠直接用你的微博帳號登陸 而後加入開發者便可 詳細步驟這裏再也不贅述url
2.建立應用 如何建立應用,直接點擊頂部導航欄的個人應用 便可 建立
*假設你建立的應用名稱加作 "程序源微博"
*應用建立完畢默認 就進入"開發階段" 就具有了受權資格
*這個時候點擊個人應用 --> 應用信息 你會看到以下的信息
App Key:917518064 應用的惟一標識
App Secret:b18853174e2902fd05b04dc34d7be792 密鑰
應用地址:https://itunes.apple.com/cn/genre/ios/id36?mt=8
這是時候咱們還須要設置一個回調頁面,就是受權成功後跳轉的頁面 如何設置?
點擊編輯 而後輸入你要回調的頁面網址便可
2.有了上面的設置以後 咱們就能夠進行資源受權了 咱們如今都是OAuth受權2.0
(1)首先第一步獲取未受權的Request Token 來到服務器的登陸界面
*新浪提供的頁面是這個頁面:https://api.weibo.com/oauth2/authorize
*必需要傳遞的兩個參數:
client_id (string類型) 申請應用時分配的AppKey // 得知道給哪一個應用受權
redirect_uri (string類型) 受權回調地址 // 受權成功後跳轉到哪一個頁面
也就是說咱們要正確的來到服務器提供的受權登陸界面完整的url地址應該是這樣的:
https://api.weibo.com/oauth2/authorize?client_id=917518064&redirect_uri=http://www.cnblogs.com/syios
打開上面的地址你會看到以下界面:
此時咱們輸入咱們的微博帳號 這裏也能夠本身給本身受權也就是說你能夠用戶剛剛建立應用的帳號 對你的應用進行受權
當咱們點擊登陸後 ,此次受權就成功了,固然若是你是第一次受權可能看到不是上面的界面 而是受權界面 這個時候你點擊受權便可
登陸成功後回跳轉到回調頁面
(2)獲取受權過的Request Token
受權成功後回自動跳轉到回調頁面
你會發現新浪會在回調頁面後面拼接一個參數 這個參數code 就是受權成功後的 Request Token (請求標記)
(3)根據受權過Request Token(請求標記) 獲取一個Access Token(訪問標記)
這個時候新浪提供了另一個地址 用來獲取訪問標記
URL : https://api.weibo.com/oauth2/access_token
固然也必需要傳以下的參數 才能成功獲取訪問標記:
client_id string 申請應用時分配的AppKey。
client_secret string 申請應用時分配的AppSecret。
grant_type string 請求的類型,填寫authorization_code
code string 調用authorize得到的code值。
redirect_uri string 回調地址,需需與註冊應用裏的回調地址一致
這個時候咱們只須要將全部的參數經過POST方式發送給新浪服務器以後咱們會獲得服務器的返回數據 返回結果以下:
{
"access_token" = "2.00vWf4GEUSKa7D739148f7608SXA9B";
"expires_in" = 137596133;
"remind_in" = 137596133;
uid = 1258537523;
}
access_token: 就是咱們須要的訪問標記 咱們只須要獲取這個標記 保存便可
uid:表示當前登陸用戶的ID
這裏須要你們明白一個知識點:
access_token : 1個用戶給1個應用受權成功後,就得到對應的1個access_token,做用是:容許1個應用訪問1個用戶的數據
uid:1個用戶對應1個uid,每1個用戶都有本身惟一的uid
舉例:
張三 /李四
應用1 /應用2
張三給應用一、應用2受權成功了:1個uid、2個access_token
李四給應用2受權成功了:1個uid、1個access_token
上面操做:產生了2個uid,3個access_token
3.受權過程當中的常見錯誤
1.invalid_request
1> 沒有傳遞必填的請求參數
2> 請求參數不對
3> URL中間留有空格
2.invalid_client
1> client_id的值傳遞錯誤(AppKey不對)
3.redirect_uri_mismatch
1> 回調地址不對
提醒:受權賬號注意 若是應用尚未通過新浪審覈,只能訪問本身或者其餘15個測試賬號的微博數據
好了,關於OAuth受權 就說這麼多了