1、用户主要信息授权
1、直接使用button可获取相关显示信息无需授权
<!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 --><open-data type="userAvatarUrl"></open-data><open-data type="userNickName"></open-data><open-data type="userGender" lang="zh_CN"></open-data>
type 的合法值
| 值 | 说明 | 最低版本 |
|---|---|---|
| groupName | 拉取群名称 | 1.4.0 |
| userNickName | 用户昵称 | 1.9.90 |
| userAvatarUrl | 用户头像 | 1.9.90 |
| userGender | 用户性别 | 1.9.90 |
| userCity | 用户所在城市 | 1.9.90 |
| userProvince | 用户所在省份 | 1.9.90 |
| userCountry | 用户所在国家 | 1.9.90 |
| userLanguage | 用户的语言 |
2、需要点击button后来授权
<!-- 需要使用 button 来授权登录 --><button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button><!-- 由于mpvue中的事件绑定不一样,所以在mpvue中是这样的--><button open-type="getUserInfo" @getuserinfo="bindGetUserInfo">授权登录</button>
返回函数中数据
{"userInfo": { //用户信息对象,不包含 openid 等敏感信息"nickName":"string", //用户昵称"avatarUrl":"string", //用户头像图片的 URL"gender":"number", //用户性别"country":"string", //用户所在国家"province":"string", //用户所在省份"city":"string", //用户所在城市"language":"string", //显示 country,province,city 所用的语言 en:英文,zh_CN:简体中文,zh_TW:繁体中文},"rawData":"string", //不包括敏感信息的原始数据字符串,用于计算签名"signature":"string", //使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密"encryptedData":"string",//包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密"iv":"string", //加密算法的初始向量,详见 用户数据的签名验证和加解密"cloudID":"string" //敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据}
通过 encryptedData 和 iv 可以解密得到关于 openId 和 unionId 以及 appid 这种敏感字段。openId 是当前应用对应的用户唯一标识,unionId 是当前开放平台对应的用户唯一标识。
2、用户手机号码授权
注意:获取微信用户绑定的手机号,需先调用wx.login接口。目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。
<!-- 需要使用 button 来授权登录 --><button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button><!-- 由于mpvue中的事件绑定不一样,所以在mpvue中是这样的--><button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取手机号</button>
返回函数中数据
{"encryptedData":"string",//包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密"iv":"string", //加密算法的初始向量,详见 用户数据的签名验证和加解密"errMsg":"string" //错误信息}
通过 encryptedData 和 iv 可以解密得到如下信息
{"phoneNumber": "string", //用户绑定的手机号(国外手机号会有区号)"purePhoneNumber": "string", //没有区号的手机号"countryCode": "string", //区号"watermark":{"appid":"string","timestamp": TIMESTAMP}}
scope 列表
| scope | 对应接口 | 描述 |
|---|---|---|
| scope.userInfo | wx.getUserInfo | 用户信息 |
| scope.userLocation | wx.getLocation, wx.chooseLocation | 地理位置 |
| scope.userLocationBackground | wx.userLocationBackground) | 后台定位 |
| scope.address | wx.chooseAddress | 通讯地址 |
| scope.invoiceTitle | wx.chooseInvoiceTitle | 发票抬头 |
| scope.invoice | wx.chooseInvoice | 获取发票 |
| scope.werun | wx.getWeRunData | 微信运动步数 |
| scope.record | wx.startRecord | 录音功能 |
| scope.writePhotosAlbum | wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum | 保存到相册 |
| scope.camera | camera 组件 | 摄像头 |
授权有效期
一旦用户明确同意或拒绝过授权,其授权关系会记录在后台,直到用户主动删除小程序。
最佳实践
在真正需要使用授权接口时,才向用户发起授权申请,并在授权申请中说明清楚要使用该功能的理由。
注意事项
1、wx.authorize({scope: "scope.userInfo"}),不会弹出授权窗口,请使用 <button open-type="getUserInfo"/>
2、需要授权 scope.userLocation、scope.userLocationBackground 时必须配置地理位置用途说明。
后台定位
与其它类型授权不同的是,scope.userLocationBackground 不会弹窗提醒用户。需要用户在设置页中,主动将“位置信息”选项设置为“使用小程序期间和离开小程序后”。开发者可以通过调用wx.openSetting,打开设置页。
