来人人都是产品经理【起点学院】,来自BAT的实战产品总监手把手教你了解产品、了解运营。
市面上很多流行的手机游戏都采用了微信的授权登录系统,也就是这样的:
这个“确认登录”按钮你肯定点击过不止一次,但你有没有想过,微信是如何实现这个功能的?为什么游戏APP可以在不输入用户名和密码的情况下获取我的微信好友信息?安全吗?带着这些问题,我们开启了今天的探索之旅。
在我们了解技术细节之前,让我们先看一个例子。
从前,有个富裕的家庭,姓白,家财万贯,收藏了大量奇珍异宝。一天,当地博物馆的馆长找到白先生,想在博物馆给白先生摆摊,每天从他家里借白先生的一些藏品到展厅里摆展。白先生觉得这个主意不错,但又不想把仓库的钥匙交给馆长,就让馆长去联系仓库,商量借宝的事情。仓库跟白先生确认了这件事情之后,就给了馆长两枚令牌,一蓝一红:蓝令牌上标有使用日期,在有效期内,馆长可以派人用蓝令牌随意借还张家的宝物;蓝令牌过期,馆长就需要派人拿着红令牌去仓库换取新的蓝令牌。馆长收下两枚令牌之后,高高兴兴的离开了。
上面的例子简单介绍了手机微信登录的授权流程,以及授权后如何获取用户数据(使用 )。文中的“白先生”就是用户,授权“馆长”(第三方应用)使用“仓库”(微信服务器)中存储的宝物(用户数据、关系链等)。“蓝色 ”就是“仓库”给“馆长”的借宝通行证,有一定的时效性,这是因为“蓝色 ”使用频率比较高,万一“丢失”或者“被盗”,造成的损失也是有限的。“红色 ”就是“馆长”更换“蓝色 ”的凭证。

微信授权登录系统基于(读音:欧奥斯)2.0协议标准,提供简单、安全的交互流程,让第三方应用在不知道用户微信登录名和密码的情况下,访问授权服务器上的用户隐私数据和资源。第三方应用需要使用微信授权登录功能时,必须先在微信开放平台获取相应的授权。接下来我们来看看微信授权登录系统的授权流程:
用户请求第三方应用使用微信帐号登录,第三方应用使用 向微信开放平台(客户端)发送登录请求,客户端加载授权页面并请求用户确认,用户点击确认按钮,微信客户端拉起第三方应用,将临时授权码(code)传递给第三方应用,完成授权,第三方应用使用临时授权码(code),通过协议向微信开放平台(服务端)请求授权,服务端返回并。
“蓝色令牌”用于从服务器获取用户数据,对应的“红色令牌”有效期为两小时,有效期为30天。
通过分析授权流程可以看出,要获得授权,需要同时拥有临时授权码(code),以及这三项信息。临时授权码是在用户点击“确认登录”按钮后由服务器生成的,有效期只有几秒,所以只要第三方应用妥善保管,整个过程的安全性是值得信赖的。
另外微信已经提供了与该功能对应的SDK,第三方应用的集成变得非常简单。
微信等社交软件在过去几年里精心打造了关系链,其他第三方应用只需接入,就能共享这个巨大的宝藏。然而,当所有人都沉浸在这个宝藏中时,微信的生态也在变得越来越强大。孔子说:“人人皆善,才是真善!”古人没有骗我!
#专栏作家#
与产品经理聊技术,微信公众号(),人人都是产品经理专栏作家。资深程序员,专注客户端开发数年,对前后端技术有基本了解,热衷于探索新的技术领域。