给产品经理讲技术丨如何抱微信大腿?说说授权登录的那些事儿

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

【文章摘要】微信等社交软件,经过几年时间苦心经营建立的关系链,其他的三方应用则只需要简单的接入就可以共享这个巨大的宝藏。然而,当大家都沉浸在这个宝藏中时,微信的生态圈也越来越壮大了。子曰「大家好才是真的好!」,古人诚不我欺!

4

 

【相关推荐】

给产品经理讲技术丨乱码导致的悲剧告白

给产品经理讲技术丨把URL五马分尸

给产品经理讲技术丨没线,并不可怕?

给产品经理讲技术丨提需求的正确姿势是什么

给产品经理讲技术丨产品后悔药来了,讲讲热补丁技术

当前市面上流行的手机游戏,很多都会用到微信的授权登录系统,就是这个:

1.webp

你肯定点过这个「确认登录」按钮,而且不止一次。然而,你没有想过,在微信里,这个功能是如何实现的?为什么不用我输入用户名和密码,游戏app就获得了我的微信好友信息?它安全吗?带着这几个问题,我们开始今天的探索之旅。

在进入技术细节前,我们先来看一个栗子。

2.webp

从前有个大户人家姓白,富可敌国,家中收藏了大量的奇珍异宝。有一天,当地博物馆的馆长找到白先生,想为白先生在博物馆设立一个展台,每天借白先生家中的一些收藏品放在展馆展示。白先生觉得这个主意不错,但又不想把库房的钥匙给馆长,就让馆长去联系库房商量宝物借用事宜。库房跟白先生确认这件事之后,给了馆长一蓝一红两张令牌:蓝色的令牌上标注着使用日期,在有效期内,馆长可派人用蓝色令牌随意借还张家的宝物;当蓝色的令牌失效后,馆长需要派人带着红色令牌到库房这里换新的蓝色令牌。馆长拿到这两张令牌后,欣然离去。

上面的栗子,简单描述了移动应用微信登录的授权流程,以及授权后用户数据的获取方式(使用令牌),文中的「白先生」就是用户,他授权「馆长」(三方应用)使用自己存放在「库房」(微信服务器)中的宝物(用户数据、关系链等)。「蓝色令牌」是「库房」给「馆长」借用宝物的通行证,有一定的时效性,这是由于「蓝色令牌」使用的较为频繁,万一「遗失」或者「被盗」,造成的损失也有限。「红色令牌」则是「馆长」更换「蓝色令牌」的凭证。

3.webp

微信授权登录系统基于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,使得三方应用的接入工作变得十分简单。

微信等社交软件,经过几年时间苦心经营建立的关系链,其他的三方应用则只需要简单的接入就可以共享这个巨大的宝藏。然而,当大家都沉浸在这个宝藏中时,微信的生态圈也越来越壮大了。子曰「大家好才是真的好!」,古人诚不我欺!

PS:有朋友问作为一个加班专业户,怎么还有时间写文章?其实只要你认为当前在做的事情有意义,一直坚持下去并不难。至于时间嘛,就像乳沟,挤挤总会有的,这不今天一不留神挤到凌晨2点了。

欢迎添加微信公众号:给讲技术

欢迎添加微信公众号:给产品经理讲技术

 

随意打赏

提交建议
微信扫一扫,分享给好友吧。