如何抱上微信的大腿?——說說授權(quán)登錄的那些事兒

2 評論 22739 瀏覽 216 收藏 6 分鐘

當(dāng)前市面上流行的手機游戲,很多都會用到微信的授權(quán)登錄系統(tǒng),就是這個:

1

你肯定點過這個「確認(rèn)登錄」按鈕,而且不止一次。然而,你沒有想過,在微信里,這個功能是如何實現(xiàn)的?為什么不用我輸入用戶名和密碼,游戲app就獲得了我的微信好友信息?它安全嗎?帶著這幾個問題,我們開始今天的探索之旅。

在進(jìn)入技術(shù)細(xì)節(jié)前,我們先來看一個栗子。

從前有個大戶人家姓白,富可敵國,家中收藏了大量的奇珍異寶。有一天,當(dāng)?shù)夭┪镳^的館長找到白先生,想為白先生在博物館設(shè)立一個展臺,每天借白先生家中的一些收藏品放在展館展示。白先生覺得這個主意不錯,但又不想把庫房的鑰匙給館長,就讓館長去聯(lián)系庫房商量寶物借用事宜。庫房跟白先生確認(rèn)這件事之后,給了館長一藍(lán)一紅兩張令牌:藍(lán)色的令牌上標(biāo)注著使用日期,在有效期內(nèi),館長可派人用藍(lán)色令牌隨意借還張家的寶物;當(dāng)藍(lán)色的令牌失效后,館長需要派人帶著紅色令牌到庫房這里換新的藍(lán)色令牌。館長拿到這兩張令牌后,欣然離去。

上面的栗子,簡單描述了移動應(yīng)用微信登錄的授權(quán)流程,以及授權(quán)后用戶數(shù)據(jù)的獲取方式(使用令牌),文中的「白先生」就是用戶,他授權(quán)「館長」(三方應(yīng)用)使用自己存放在「庫房」(微信服務(wù)器)中的寶物(用戶數(shù)據(jù)、關(guān)系鏈等)?!杆{(lán)色令牌」是「庫房」給「館長」借用寶物的通行證,有一定的時效性,這是由于「藍(lán)色令牌」使用的較為頻繁,萬一「遺失」或者「被盜」,造成的損失也有限?!讣t色令牌」則是「館長」更換「藍(lán)色令牌」的憑證。

2

微信授權(quán)登錄系統(tǒng)基于OAuth(發(fā)音:偶奧斯)2.0協(xié)議標(biāo)準(zhǔn),它提供了一套簡單,安全的交互流程,讓三方應(yīng)用可以在不知道用戶微信登錄名和密碼的情況下,訪問用戶在授權(quán)方服務(wù)器上的私密數(shù)據(jù)和資源。當(dāng)三方應(yīng)用需要使用微信授權(quán)登錄功能時,需要先在微信開放平臺獲得對應(yīng)的AppID和AppSecret。下面,我們看下微信授權(quán)登錄系統(tǒng)的授權(quán)流程:

  1. 用戶請求三方應(yīng)用用微信號登錄。
  2. 三方應(yīng)用使用AppID向微信開放平臺(客戶端)發(fā)送登錄請求。
  3. 客戶端加載授權(quán)頁面,請求用戶確認(rèn)。
  4. 用戶點擊確認(rèn)按鈕。
  5. 微信客戶端拉起三方應(yīng)用,并將臨時授權(quán)碼(code)傳遞給三方應(yīng)用,予授權(quán)完成。
  6. 三方應(yīng)用使用臨時授權(quán)碼(code)、AppID和AppSecret,通過https協(xié)議向微信開放平臺(服務(wù)器)請求access_token。
  7. 服務(wù)器返回access_token和refresh_token。

access_token就是從服務(wù)器獲取用戶數(shù)據(jù)的「藍(lán)色令牌」,refresh_token則對應(yīng)「紅色令牌」。access_token的有效期是兩個小時,refresh_token的有效期是30天。

通過分析授權(quán)流程可以看出,要想獲取access_token,需要同時具備臨時授權(quán)碼(code)、AppID和AppSecret這三個信息,其中臨時授權(quán)碼由用戶點擊「確認(rèn)登錄」按鈕后由服務(wù)器生成,它的有效期只有幾秒,所以三方應(yīng)用只要妥善的保管AppSecret和access_token,整個流程的安全性是值得信賴的。

另外,微信已經(jīng)提供了該功能對應(yīng)的SDK,使得三方應(yīng)用的接入工作變得十分簡單。

微信等社交軟件,經(jīng)過幾年時間苦心經(jīng)營建立的關(guān)系鏈,其他的三方應(yīng)用則只需要簡單的接入就可以共享這個巨大的寶藏。然而,當(dāng)大家都沉浸在這個寶藏中時,微信的生態(tài)圈也越來越壯大了。子曰「大家好才是真的好!」,古人誠不我欺!

#專欄作家#

給產(chǎn)品經(jīng)理講技術(shù),微信公眾號(pm_teacher),人人都是產(chǎn)品經(jīng)理專欄作家。資深程序猿,專注客戶端開發(fā)若干年,對前端、后臺技術(shù)略懂,熱衷于對新的科技領(lǐng)域的探索。

本文原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,不得轉(zhuǎn)載。

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 問一個問題哈:三方應(yīng)用獲取微信信息安全嗎?

    來自廣東 回復(fù)
  2. 贊!

    來自北京 回復(fù)