同学们大家好,我是小伊同学,上一节我们介绍了一些常用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都比较简单,形式是固定的。大家认识了他们以后,直接复制过来修改一下甚至有的连修改都不用就可以使用了。的确如此,但是提醒同学们在使用的时候注意弄清逻辑关系,必要的时候可以绘制流程图来理清思路。
好了,本节课的内容就到这里,我们明天继续。如果大家有什么问题,欢迎在文末留言。
想看视频版?
关注公号“微程序学堂”,我们的视频教程即将上线
如果你自己写了好文章想投稿
请联系我们
UTRAN接口的通用协议模型如下图: 通俗地讲,通讯网络由终端(terminal)、连接(links)、网络节点(nodes)组成, links将nodes 关联起来。源终端(MO)发送的消息是怎样才能到目的终端(MT)呢? 消息经过links 和nodes,直至到达MT,其中关键是nodes怎么路由(route)消息到最终...
Linux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统。用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统。在系统安装过程中可以创建两种帐号: 1、root--超级用户帐号,使用这个帐号可以在系统中做任何事情。 ...
1.用户基本概述 1.1.什么是用户? 用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房⼦,能够正常入驻) F:那Linux与Windows系统的用户有什么区别? Q:本质都是登陆系统,只不过Linux⽀持多个用户 同时登陆。 F:难道Windows就不算多用户操作系统吗? Q:其实不是,在Windows...
背景信息 用户通过Telnet登录设备时,设备上必须配置验证方式,否则用户无法成功登录设备。设备支持不认证、密码认证和AAA认证三种用户界面的验证方式,其中AAA认证方式安全性最高。 采用AAA本地认证方式实现用户通过Telnet登录设备的身份认证,设备上需要开启Telnet服务,将用户界面(以VTY用户界面为例)的验证方式设...
原来我们可以从官网 http://trafficserver.apache.org/tools/via 获取via头的解码信息来得到指定url的缓存状态信息,现在我们可以直接利用本地工具就可以达到目的。 traffic_via工具能够解码Via头信息,输入的参数要求是[]包含的字符串。 使用方法: 参考...
简介 channel_stats插件能对每个channel收集运行时统计信息(速率,请求数,更多选项将在未来添加),这些统计信息通过http json方式输出,这些 接口代码取自stats_over_http插件。通常,该插件只用于具有*固定*个数的remap规则的反向代理服务器,它并非为那些不限制channel的代理服务器,比如op...
logger是一个shell命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息 logger语法: 可以使用的相关命令 -d, --udp 使用数据报(UDP)而不是使用默认的流连接(TCP) -i, --id 逐行记录每一次logger的进程ID -f, --fil...
今天在测试中遇到了一个问题 使用JMeter时请求相关地址参数及方法都填写正确,但是相应数据返回始终不对,例如 查看取样器结果显示 200 正常,但响应数据不符合正常的结果。 经反复检查发现问题如下: 1)没有添加HTTP信息头管理器 (获取根据就近原则) 2)HTTP信息头管理器中填写错误,将Content-Type 填写成了Co...
第一,你要有log4j的对应的包,由于我用的maven,所以直接在pom.xml文件依赖下载则可,如你尚为有此包,请自行百度下载导入,或上http://www.mvnrepository.com/搜索。上如则是我的log4j的包的版本。好了,用了jar包之后,用来学习的项目结构如下:在对应的路径下创建log4Test.java和log...
英语的重要性,毋庸置疑!尤其对广大职场人士,掌握英语意味着就多了一项竞争的技能。那,对于我们成人来说,时间是最宝贵的。如何短时间内在英语方面有所突破,这是我们最关心的事情。英语学习,到底有没有捷径可以走,是否可以速成?周老师在这里明确告诉大家,英语学习,没有绝对的捷径走,但是可以少走弯路。十多年的教学经验告诉我们,成功的学习方法可以借...
展开全部 其实IDLE提供了一个显32313133353236313431303231363533e78988e69d8331333365663438示所有行和所有字符的功能。 我们打开IDLE shell或者IDLE编辑器,可以看到左下角有个Ln和Col,事实上,Ln是当前光标所在行,Col是当前光标所在列。 我们如果想得到文件代码...
前言[1]从 Main 方法说起[2]走进 Tomcat 内部[3]总结[4]《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spri...
【本文摘要】【注】本文所述内容为学习Yjango《学习观》相关视频之后的总结,观点归Yjango所有,本文仅作为学习之用。阅读本节,会让你对英语这类运动类知识的学习豁然开朗,你会知道英语学习方面,我们的症结所在。学习英语这类运动类知识,需要把握四个原则第一,不要用主动意识。第二,关注于端对端第三,输入输出符合实际情况第四,通过多个例子...
点云PCL免费知识星球,点云论文速读。文章:RGB-D SLAM with Structural Regularities作者:Yanyan Li , Raza Yunus , Nikolas Brasch , Nassir Navab and Federico Tombari编译:点云PCL代码:https://github.co...