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

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

當前市面上流行的手機游戲,很多都會用到微信的授權登錄系統,就是這個:

1

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

在進入技術細節前,我們先來看一個栗子。

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

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

2

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

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

access_token就是從服務器獲取用戶數據的「藍色令牌」,refresh_token則對應「紅色令牌」。access_token的有效期是兩個小時,refresh_token的有效期是30天。

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

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

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

#專欄作家#

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

本文原創發布于人人都是產品經理,未經許可,不得轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 問一個問題哈:三方應用獲取微信信息安全嗎?

    來自廣東 回復
  2. 贊!

    來自北京 回復