在不使用云开发情况下创建的微信小程序默认界面中,已经具备了调用用户头像及昵称,实现初始注册的功能,在微信提供的基础框架下进行优化。
??
观察源代码可以看出获取用户信息时分成了两种种情况或方式。
第一种是直接获取微信开放数据(open-data)
微信的开放能力中提供了直接调用开放数据的能力,并且该过程中无需用户授权,数据包括下表内容。
合法值 | 说明 | groupName | 拉取群名称 | userNickName | 用户昵称 | userAvatarUrl | 用户头像 | userGender | 用户性别 | userCity | 用户所在城市 | userProvince | 用户所在省份 | userCountry | 用户所在国家 | userLanguage | 用户语言 |
可以直接通过<open-data type=" "></open-data>实现调用
第二种是利用开放接口获取用户授权,调用用户信息
实际上实例代码中给出了两种函数:wx.getUserProfile和wx.getUserInfo,在初次进入界面时会显示弹窗,获取用户授权。
通过回调函数基本一致,包括用户信息和一些其他参数,更推荐使用前者。
在获取用户信息的过程中,用到了一些布尔符号来进行判断,防止用户重复授权。
canIUseOpenData函数返回是否可以直接获取用户信息,在没有特殊情况下返回True,可以直接进行调用用户信息。若为False,则进入上文中的第二种获取用户信息的方式。
在该页面打开时,通过设置生命周期函数,会判断能否使用wx.getUserProfile函数调用信息,并返回相应布尔值到参数canIUseGetUserProflie
参数被置为True后,则会显示按钮获取用户授权,用户的选择与参数hasUserInfo绑定。由此运行在js中绑定的getUserProfile函数。
?在微信开发文档中官方给出,wx.getUserProfile可以回调如下属性
属性 | 说明 | userInfo | 用户信息对象 | rawData | 不包括敏感信息的原始数据字符串,用于计算签名 | signature | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息 | encrytedData | 包括敏感数据在内的完整用户信息的加密数据 | iv | 加密算法的初始向量 | cloudID | 敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据 |
在这里可以通过console函数在控制台查看返回结果。
|