微信小程序云开发教程-微信小程序的API入门-获取用户身份信息系列API
发布于 4 年前 作者 xiulanjiang 322 次浏览 来自 分享

  同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API。



  在微信小程序中,我们往往需要获取用户的身份信息,比如昵称、头像、性别、地区等。要得到这些信息,就需要我们调用获取用户信息的api了。在小程序中,微信非常重视对用户隐私的保护,因此有很多关于获取用户信息的规范,比如获取信息需要用户授权,这使得我们获取信息的api比其他的api要更加复杂。


  大家可以打开微信开发者文档,找到api,在左侧列出的所有api中找到开放接口,在其中找到用户信息,或者通过这里的学习链接进行访问,我们可以更细节地了解和学习整个过程。



  相信大家都见过右侧图片中所展示的界面,在使用很多小程序的时候都遇见过。这就是授权的界面,只有用户点击允许,我们才能拿到用户信息。此外,这个授权是有时效的,即一段时间内不会重复让你授权很多次。


  对于一个需要用户信息才能完成需求功能的小程序来说,一般,我们将获取用户信息放在这个小程序所有功能第一步来实现,这样就可以省去在每次需要用户信息的功能开始前都要进行检查的麻烦,相当于在小程序开始使用之前,就已经准备好了相关的信息,然后再开始执行小程序。就像大家坐火车或者飞机一样,在进入车站的时候进行安检,验证你的身份。那么,当你登上火车后,任何乘务员都不会再担心你的身份,否则,每个乘务员在为你服务的时候都应当首先验证一下你的身份信息。


  此外,大家可以看到,在我们获取授权的界面上,微信人性化地提供了拒绝按钮,那么,对于拒绝授权的情况,我们也要有相应的处理方法。大家要始终牢记,我们的目标是在小程序开始使用之前,我必须准备好相关的信息。这就像一道关卡,不合格的人不能开始使用小程序一样。据此我们可以绘制出整个授权部分的流程图。


  当用户打开小程序的时候,首先应该检测是否授权,对于已经授权过了的直接放行,那么这里就是调用api获取信息,然后开始正常小程序的功能。对于还未授权的,我们则需要调用api进行授权,那么这里我们使用了一种简单的方法,就是获取后不管结果直接开始和正常进入的流程一样,因为这时如果已经授权,那么再次检查就会通过,如果未授权,那么还是在这个循环里,不会向下进行。当然大家也可以采用其他方法,比如判断授权结果,如果用户点击了允许,那么进入调用api获取信息的流程中,如果点击了拒绝,那么重新获取授权。



  对于上述过程,主要涉及到了三部分内容:检测是否授权,调用api获取用户信息和获取授权。对于检测授权这里,我们使用了获取小程序设置的api,在成功函数中的回调参数中,实际上有很多权限内容,比如位置信息、身份信息等,那么我们只检测用户信息这一部分就可以了。这就是if语句的作用,如果条件为真,那么表明已经授权,可以调用获取信息的api了,中间这部分wx.getUserinfo就是获取用户信息的api,此处我们直接一起写了。这就是两个api嵌套调用的样子,通过编译器自动整理的缩进格式,我们能够很清楚地看到层次关系。在获取用户信息的api中,我们在成功函数的参数中就能够读取到用户信息,他存放在userinfo变量中。对于获取授权的接口,在老版本的基础库中是api的格式,但是新版的仅仅支持通过wxml语句的button按钮来获取数据,只要给这个button组件添加open-type属性,当用户在页面点击这个按钮,就会弹出上一页ppt中展示的授权对话框了。但是在我们的ui设计中加入一个授权按钮并不美观,因此,我们一般新建一个页面来单独放置这个button按钮。根据前面的说明,那这个页面要添加到所有页面之前。这个页面实际上才是小程序的第一个页面,一般我们也专门用来做路由,主要处理逻辑代码,比如用户是扫码打开小程序的还是分享打开小程序的,我们在这个页面进行识别,然后分别跳转不同页面。那对于本小程序来说,没有用到那么多功能,但是大家要清楚这个页面的作用。当这个页面完成后,保证所有必要的如用户信息等都准备齐全了,就可以分流到小程序内部的几个页面上了。否则,当分享或者扫码打开小程序进入不同页面时,我都要判断一下身份信息,造成代码的重复,增加了工作量。



  那么,我们都能获取到哪些用户信息呢,在userInfo中有下面这一些字段:nickName:用户昵称,avatarUrl:用户头像图片的 URL,gender:用户性别,0表示未知,1表示男性,2表示女性,country:用户所在国家,province:用户所在省份,city:用户所在城市,language:显示 country,province,city 所用的语言,en表示英文,zh_CN表示简体中文,zh_TW表示繁体中文。其中,只有gender字段是数字number类型,其余都为string类型。我们使用userInfo加点再加这几个属性的名称就能够访问或使用这些数据了。


  同学们可以发现,小程序api都比较简单,形式是固定的。大家认识了他们以后,直接复制过来修改一下甚至有的连修改都不用就可以使用了。的确如此,但是提醒同学们在使用的时候注意弄清逻辑关系,必要的时候可以绘制流程图来理清思路。


  好了,本节课的内容就到这里,我们明天继续。如果大家有什么问题,欢迎在文末留言。

回到顶部