來人人都是産品經理【起點學院】,BAT實戰派産品總監手把手系統帶你學産品、學運營。
當前市面上流行的手機遊戲,很多都會用到微信的授權登錄系統,就是這個:
你肯定點過這個「确認登錄」按鈕,而且不止一次。然而,你沒有想過,在微信裡,這個功能是如何實現的?為什麼不用我輸入用戶名和密碼,遊戲app就獲得了我的微信好友信息?它安全嗎?帶着這幾個問題,我們開始今天的探索之旅。
在進入技術細節前,我們先來看一個栗子。
從前有個大戶人家姓白,富可敵國,家中收藏了大量的奇珍異寶。有一天,當地博物館的館長找到白先生,想為白先生在博物館設立一個展台,每天借白先生家中的一些收藏品放在展館展示。白先生覺得這個主意不錯,但又不想把庫房的鑰匙給館長,就讓館長去聯系庫房商量寶物借用事宜。庫房跟白先生确認這件事之後,給了館長一藍一紅兩張令牌:藍色的令牌上标注着使用日期,在有效期内,館長可派人用藍色令牌随意借還張家的寶物;當藍色的令牌失效後,館長需要派人帶着紅色令牌到庫房這裡換新的藍色令牌。館長拿到這兩張令牌後,欣然離去。
上面的栗子,簡單描述了移動應用微信登錄的授權流程,以及授權後用戶數據的獲取方式(使用令牌),文中的「白先生」就是用戶,他授權「館長」(三方應用)使用自己存放在「庫房」(微信服務器)中的寶物(用戶數據、關系鍊等)。「藍色令牌」是「庫房」給「館長」借用寶物的通行證,有一定的時效性,這是由于「藍色令牌」使用的較為頻繁,萬一「遺失」或者「被盜」,造成的損失也有限。「紅色令牌」則是「館長」更換「藍色令牌」的憑證。
微信授權登錄系統基于OAuth(發音:偶奧斯)2.0協議标準,它提供了一套簡單,安全的交互流程,讓三方應用可以在不知道用戶微信登錄名和密碼的情況下,訪問用戶在授權方服務器上的私密數據和資源。當三方應用需要使用微信授權登錄功能時,需要先在微信開放平台獲得對應的AppID和AppSecret。下面,我們看下微信授權登錄系統的授權流程:
access_token就是從服務器獲取用戶數據的「藍色令牌」,refresh_token則對應「紅色令牌」。access_token的有效期是兩個小時,refresh_token的有效期是30天。
通過分析授權流程可以看出,要想獲取access_token,需要同時具備臨時授權碼(code)、AppID和AppSecret這三個信息,其中臨時授權碼由用戶點擊「确認登錄」按鈕後由服務器生成,它的有效期隻有幾秒,所以三方應用隻要妥善的保管AppSecret和access_token,整個流程的安全性是值得信賴的。
另外,微信已經提供了該功能對應的SDK,使得三方應用的接入工作變得十分簡單。
微信等社交軟件,經過幾年時間苦心經營建立的關系鍊,其他的三方應用則隻需要簡單的接入就可以共享這個巨大的寶藏。然而,當大家都沉浸在這個寶藏中時,微信的生态圈也越來越壯大了。子曰「大家好才是真的好!」,古人誠不我欺!
給産品經理講技術,微信公衆号(pm_teacher),人人都是産品經理專欄作家。資深程序猿,專注客戶端開發若幹年,對前端、後台技術略懂,熱衷于對新的科技領域的探索。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!