本文為原創(chuàng)作品漓糙。歡迎轉(zhuǎn)載铣缠,轉(zhuǎn)載請注明出處:林東洲的博客 | Lindz Blog。
OAuth協(xié)議簡介:
OAuth協(xié)議:即為Open Authorization昆禽,我們經(jīng)常在一些網(wǎng)站提供一些例如QQ蝗蛙,微博等應(yīng)用的登錄方式。
例如:
簡單說來醉鳖,OAuth協(xié)議就是大公司如騰訊捡硅,阿里巴巴開放一些接口權(quán)限,可以讓用戶在第三方應(yīng)用不知道密碼的情況完成登錄操作盗棵,并提供給第三方應(yīng)用一些基本的信息壮韭。
流程圖:
OAuth應(yīng)用場景:
- QQ用戶授權(quán)第三方應(yīng)用如(知乎,豆瓣)使用其QQ賬號相關(guān)信息纹因。
- 獲得授權(quán)后喷屋,在符合權(quán)限規(guī)則的情況下訪問各種API。(如一鍵分享到QQ空間)
- 同一家公司的不同系統(tǒng)共享賬號信息辐怕,比如阿里巴巴旗下的淘寶逼蒙,支付寶,阿里云都可以使用淘寶賬號進(jìn)行登錄寄疏。
重要步驟解析:
一是牢、請求OAuth登錄頁:第三方應(yīng)用請求QQ登錄頁面時使用的帶有特定參數(shù)的URL。
例如極客學(xué)院上的請求登錄頁地址為:
https://graph.qq.com/oauth/show?..&client_id=101119675&redirect_uri=http://passport.jikexueyuan.com/connect/success&...
這個URL稱之為:Request Token URL - 未授權(quán)的令牌請求服務(wù)地址
client_id為QQ對該站點(diǎn)的唯一標(biāo)識
redirect_uri為用戶登錄成功后的回調(diào)地址
二陕截、用戶使用QQ號登錄并授權(quán)驳棱。
在用戶登陸成功后,QQ在回調(diào)地址中加入了一個code參數(shù)給第三方應(yīng)用农曲。
比如:
https://passport.jikexueyuan.com/connect/success/qqcallback?code=xxxxxx
三社搅、返回登錄結(jié)果。
處于安全性的考慮乳规,需要第三方應(yīng)用向令牌服務(wù)地址再次發(fā)起請求形葬。
該地址稱為:User Authorization URL - 用戶授權(quán)的令牌請求服務(wù)地址
例如:
https://xxx.qq.com/oauth/...?...&client_id=xxx&&...&client_secret=xxxxxxx&....&code=xxxxxx...
最終成功后第三方應(yīng)用獲取的一個OAuth接口的令牌(AcessToken),以后第三方應(yīng)用在請求QQ提供信息時就以這個令牌作為標(biāo)識。