注意:获取授权需要appid

1、用户主要信息授权

1、直接使用button可获取相关显示信息无需授权

  1. <!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 -->
  2. <open-data type="userAvatarUrl"></open-data>
  3. <open-data type="userNickName"></open-data>
  4. <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后来授权

  1. <!-- 需要使用 button 来授权登录 -->
  2. <button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
  3. <!-- 由于mpvue中的事件绑定不一样,所以在mpvue中是这样的-->
  4. <button open-type="getUserInfo" @getuserinfo="bindGetUserInfo">授权登录</button>

返回函数中数据

  1. {
  2. "userInfo": { //用户信息对象,不包含 openid 等敏感信息
  3. "nickName":"string", //用户昵称
  4. "avatarUrl":"string", //用户头像图片的 URL
  5. "gender":"number", //用户性别
  6. "country":"string", //用户所在国家
  7. "province":"string", //用户所在省份
  8. "city":"string", //用户所在城市
  9. "language":"string", //显示 countryprovincecity 所用的语言 en:英文,zh_CN:简体中文,zh_TW:繁体中文
  10. },
  11. "rawData":"string", //不包括敏感信息的原始数据字符串,用于计算签名
  12. "signature":"string", //使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息,详见 用户数据的签名验证和加解密
  13. "encryptedData":"string",//包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密
  14. "iv":"string", //加密算法的初始向量,详见 用户数据的签名验证和加解密
  15. "cloudID":"string" //敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据
  16. }

通过 encryptedDataiv 可以解密得到关于 openIdunionId 以及 appid 这种敏感字段。
openId 是当前应用对应的用户唯一标识,unionId 是当前开放平台对应的用户唯一标识。

2、用户手机号码授权

注意:获取微信用户绑定的手机号,需先调用wx.login接口。目前该接口针对非个人开发者,且完成了认证的小程序开放(不包含海外主体)。需谨慎使用,若用户举报较多或被发现在不必要场景下使用,微信有权永久回收该小程序的该接口权限。

  1. <!-- 需要使用 button 来授权登录 -->
  2. <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>
  3. <!-- 由于mpvue中的事件绑定不一样,所以在mpvue中是这样的-->
  4. <button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">获取手机号</button>

返回函数中数据

  1. {
  2. "encryptedData":"string",//包括敏感数据在内的完整用户信息的加密数据,详见 用户数据的签名验证和加解密
  3. "iv":"string", //加密算法的初始向量,详见 用户数据的签名验证和加解密
  4. "errMsg":"string" //错误信息
  5. }

通过 encryptedDataiv 可以解密得到如下信息

  1. {
  2. "phoneNumber": "string", //用户绑定的手机号(国外手机号会有区号)
  3. "purePhoneNumber": "string", //没有区号的手机号
  4. "countryCode": "string", //区号
  5. "watermark":
  6. {
  7. "appid":"string",
  8. "timestamp": TIMESTAMP
  9. }
  10. }

3、用户定位、相册等其他授权

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.userLocationscope.userLocationBackground 时必须配置地理位置用途说明。

后台定位
与其它类型授权不同的是,scope.userLocationBackground 不会弹窗提醒用户。需要用户在设置页中,主动将“位置信息”选项设置为“使用小程序期间和离开小程序后”。开发者可以通过调用wx.openSetting,打开设置页。