快好知 kuaihz

如何抱上微信的大腿?——说说授权登录的那些事儿

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

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

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

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

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

微信授权登录系统基于OAuth(发音:偶奥斯)2.0协议标准,它提供了一套简单,安全的交互流程,让三方应用可以在不知道用户微信登录名和密码的情况下,访问用户在授权方服务器上的私密数据和资源。当三方应用需要使用微信授权登录功能时,需要先在微信开放平台获得对应的AppID和AppSecret。下面,我们看下微信授权登录系统的授权流程:

用户请求三方应用用微信号登录。

三方应用使用AppID向微信开放平台(客户端)发送登录请求。

客户端加载授权页面,请求用户确认。

用户点击确认按钮。

微信客户端拉起三方应用,并将临时授权码(code)传递给三方应用,予授权完成。

三方应用使用临时授权码(code)、AppID和AppSecret,通过https协议向微信开放平台(服务器)请求access_token。

服务器返回access_token和refresh_token。

access_token就是从服务器获取用户数据的「蓝色令牌」,refresh_token则对应「红色令牌」。access_token的有效期是两个小时,refresh_token的有效期是30天。

通过分析授权流程可以看出,要想获取access_token,需要同时具备临时授权码(code)、AppID和AppSecret这三个信息,其中临时授权码由用户点击「确认登录」按钮后由服务器生成,它的有效期只有几秒,所以三方应用只要妥善的保管AppSecret和access_token,整个流程的安全性是值得信赖的。

另外,微信已经提供了该功能对应的SDK,使得三方应用的接入工作变得十分简单。

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:大腿  大腿词条  事儿  事儿词条  说说  说说词条  授权  授权词条  那些  那些词条  
产品

 数据扫盲(1):我们常说的DAU...

很多互联网人都了解DAU、MAU的重要性,但是具体的数据指标划分你知道吗?对数据基本功的扎实了解,是沟通的桥梁,本文作者对常见的数据指标进行了分析,希望通过此文...(展开)