適用範圍瀏覽器
僅需臨時訪問的場景安全
用戶會按期在API提供者那裏進行登陸app
OAuth客戶端運行在瀏覽器中(Javascript、Flash等)google
瀏覽器絕對可信,由於該類型可能會將訪問令牌泄露給惡意用戶或應用程序url
流程剖析spa
1. 讓用戶明白所作的操做並請求認證code
這一步與受權碼認證模式中的操做相似,即當牽涉到OAuth認證時,應首先讓用戶明確該操做。而後將用戶引導至受權頁面。
該受權接口的URL會在開發者文檔中給出,以谷歌爲例:blog
https://accounts.google.com/o/oauth2/authtoken
在請求該頁面時還需附帶幾個參數:接口
client_id
在應用註冊時提供
redirect_uri
受權認證後的重定向地址
scope
應用所請求訪問的數據,通常由空格分隔的多個字符串組成
response_type
對於此受權類型來講爲「token」,即在受權成功後會返回access token
2. 從URL中解析access token
當受權順利完成後,用戶會被重定向到redirect_uri中指定的URL並附帶access_token等重要數據,它們會包含在url hash中,例如:
http://example.com/callback#access_token=ya29GAHES6ZSzX&token_type=Bearer&expires_in=3600
JavaScript是不會自動將解析hash段中的元素解析成鍵/值對,所以咱們須要手動進行該操做:
1
2
3
4
5
6
7
8
|
var
oauthParams = {};
// parse the query string
var
params = {}, queryString = location.hash.substring(1), regex = /([^&=]+)=([^&]*)/g, m;
while
(m = regex.exec(queryString)) {
oauthParams[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
...
|
3. 訪問API
拿到了access_token,API接口就向你敞開了大門,接下來的操做我想就無需闡述了。
從整個流程能夠看出,相比受權碼受權,隱式受權少了第一步獲取Authorization Code的過程,所以變得更爲簡單。但正由於如此也下降了安全性。