账号登陆已经几乎是所有手机移动APP的必备功能,账号登陆并非简单一个登陆的功能,其实更多的时候是在为其他功能服务,比如:多设备数据同步,必须有账号关联;个性化推荐,也必须基于用户账号的习惯;评论功能,也是需要有账号登陆...... 以上列举的只是一些比较简单的用户登陆后的相关功能,如果是社交类应用,网络游戏类应用或者购物类应用,那账号登陆的功能就是最基础也最重要的功能了。
现有的移动应用中账号登陆主要有两种:1、自家平台提供账号注册登陆入口;2,使用第三方账号登陆。从技术难道上来讲,自家平台提供注册登陆入口相对而来难度较大,且需要考虑的安全因素太多;第三方登陆则至相对简单,只需要调用第三方登陆平台的SDK或者API,同时客户端和服务端也提供了开源代码和案例模板。从用户角度来看,自家平台注册账号登陆会很麻烦,用户会嫌注册账号麻烦,也会考虑账号安全问题,也会觉得又得多记一个账号密码;反而第三方账号登陆则操作简单多了,也不用多记住账号密码,安全性也多一层保障。因此现在移动APP里主流的登陆方案就是使用第三方登陆。
国外应用,可能使用Google登陆,Facebook登陆,Twitter登陆的比较多;国内则是QQ登陆,微信登陆,微博登陆等等;同时,第三方登陆的流程也大致相似,主要都是三步:
第一步:请求CODE,简单理解就是移动应用调用三方客户端或者网页,请求三方帐号授权
第二步:通过code获取access_token,移动应用内集成的三方SDK将code发送给三方的授权服务器认证,通过则返回access_token
第三步:通过access_token调用接口,移动应用内集成的三方SDK将access_token发送给三方服务器获取基本的用户信息
通过这三步就完成了三方帐号的登陆流程了,通过流程可以看见,移动应用是完全获取不到三方帐号的密码等重要信息的,最后三方服务器返回给移动应用的是一些头像,昵称等基本信息,下图是移动应用调用微信登陆的一个流程:
既然简单了解了三方登陆的的基本流程,那接下来就梳理下测试需要注意的地方:
1、手机上有没有安装第三方平台的应用。这一步是获取Code中的一步,据我知道的微信登录必须有安装微信客户端,是没有提供网页端登陆的。而我之前测试过的产品使用Facebook登陆时是优先使用客户端登陆,如果没有安装客户端会使用API请求打开网页输入帐号密码登陆。不管怎么样,所有的第三方登陆场景里都需要考虑到有没有安装三方平台的客户端。
2、所开发的应用是否在第三方平台注册过相关信息,不管是微信还是Facebook或者其他,都需要在其开发者平台上注册应用的相关信息。如果没有注册,那么获取access_token这一步必然会是失败的。讲真之前经常由于这个被坑。
3、access_token获取成功之后,只要网络正常一般登陆场景都是没问题的。但还有点需要注意的是用户信息和自己的服务器的交互。由于应用自己的服务器也许要存储一些用户相关的数据,那么自己的服务器肯定讲获取的三方账户的基本数据发送给自己的服务器。也需要检查下我们自己的服务器是否整齐存储了有用的信息。
4、登陆成功后,用户的头像昵称等基本信息的正确性。之前遇到过一个Bug,用户使用Facebook登陆后,头像不清晰,结果问题是Facebook返回用户数据时,头像传了3中分辨率不同的图片,偏偏我们的服务器保存的是分辨率最小的图片。同样如果昵称中包含特殊字符,或者名称过长等等场景都是需要注意的
5、切换帐号的场景,这类问题之前也遇到过。之前测试使用Twitter登陆,退出登陆后再使用Twitter登陆总是默认使用之前的帐号,无法切换其他Twitter帐号。因为应用缓存了之前的Token,并且Token没那么快过期,因此无法切换帐号了。所以后续就做了个需求,每次退出登陆时,清理一次Token。
以上是我之前测试帐号登陆一块的功能时的一些经验,我也是最近才开始总结,希望对大家多多少少有点用。