微信小程序如何获取用户信息:组件授权为主

微信小程序如何获取用户信息,当前主流方案是依靠按钮组件触发用户主动授权,不再支持静默拉取头像昵称,openid通过wx.login后端解密拿到,手机号使用getPhoneNumber按钮组件,头像昵称使用头像昵称填写组件,所有敏感信息收集前必须在微信公众平台配置隐私保护指引,该方案适合基础库2.27.1及以上版本的小程序,基础库低于该版本的旧小程序存量包仍可使用wx.getUserProfile,但新版本提交审核会被拦截,同时需要符合《个人信息保护法》中告知同意的相关要求。

微信小程序获取用户信息的接口与组件对比

方式可拿到的数据触发条件适用状态
wx.logincode,后端换取openid、unionid代码直接调用,无需用户点击推荐,用于账号登录标识
头像昵称填写组件用户自定义输入的昵称、上传头像用户主动点击输入框提交推荐,新版标准方案
getPhoneNumber按钮加密手机号,后端解密点击指定open-type按钮,弹窗确认推荐,用于收货、核验场景
wx.getUserProfile头像昵称(新版返回默认占位信息)按钮点击调用,每次都弹窗不推荐,新版基础库失效

openid属于用户唯一匿名标识,不属于对外可识别的个人敏感信息,你可以在用户进入小程序时直接调用wx.login拿到code,传到自己服务端,用小程序appid、appsecret和code向微信服务端接口换取openid和session_key,session_key用来解密手机号、加密用户信息,前端不能直接暴露session_key,避免信息泄露。

头像昵称填写组件是目前微信官方主推的方案,组件标签为button,open-type设置chooseAvatar,搭配input节点绑定nickname,用户点击后可以自主上传头像、填写昵称,数据由用户主动输入提交,不再从微信用户资料里直接拉取,拿到头像临时路径和昵称文本后,你再上传到业务服务器保存,不要强制用户填写头像昵称才能使用基础功能。

手机号获取必须使用open-type="getPhoneNumber"的button组件,用户点击并同意弹窗之后,前端拿到加密的encryptedData和iv,这两组参数只能传到后端,用之前wx.login获取的session_key进行解密,前端无法直接解析手机号明文,这个限制用来降低手机号被前端脚本窃取的风险,测试环境和正式环境解密逻辑保持一致。

配置隐私指引是上线前的硬性环节。

你登录微信公众平台,进入设置页面找到隐私设置,勾选对应的收集项,填写每一项信息对应的使用目的,比如手机号用于订单通知,头像昵称用于个人主页展示,没有填写真实用途的版本提交时会审核驳回,隐私指引内容要和代码里实际收集的信息保持一致,不能勾选未使用的权限项。

用户可以随时撤回授权。

你可以调用wx.getSetting查询当前授权状态,当用户拒绝授权手机号或者头像信息时,不能锁住小程序全部功能,只需要隐藏依赖该信息的业务模块,保留不需要授权的基础服务,这个规则写在微信小程序运营规范的数据收集条款内。

unionid仅在用户绑定微信开放平台主体时可以获取,同一个开放平台下的小程序、公众号、应用可以共用同一个unionid,用来打通账号体系,如果没有绑定开放平台,你只能拿到独立的openid,无法获取unionid。

不要在onLoad生命周期自动拉起授权弹窗,该行为属于违规收集。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于微信小程序如何获取用户信息的文章欢迎访问:百科