微信小程序用户授权
微信小程序最常用的可能就是调用用户权限给用户带来更多的用户体验
而我们进入小程序的第一步就是授权小程序调用你的权限(调用用户权限基本要在用户进入的第一时间就进行调用授权)提前调用
微信小程序很少涉及敏感信息的权限
部分接口需要经过用户授权同意才能调用。微信小程序把这些接口按使用范围分成多个 scope,用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。
注意:
如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
如果用户已授权,可以直接调用接口;
如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。
其中权限有以下多种
scope 对应接口 | 描述 |
---|---|
scope.userInfo | wx.getUserInfo 用户信息 |
scope.userLocation | wx.getLocation, wx.chooseLocation 地理位置 |
scope.userLocationBackground | wx.startLocationUpdateBackground 后台定位 |
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 组件 摄像头 |
例如我需要调用摄像头的权限
// 获取用户当前设置的权限
wx.getSetting({
//回调成功函数
success:(res) => {
// 判断用户的相机权限是否开启,未开启值为 undefined,开启后值为 true
if (res.authSetting['scope.camera'] == undefined)
{
// 如果未开启相机权限,适用 wx.authorize API 弹出访问框
wx.authorize({
scope: 'scope.camera',
success:() => {
// 用户点击确定后执行此处代码。跳转页面
wx.navigateTo({
url: '../upLoad/upLoad',
})
}
})
}
// 若用户已开启相机权限,直接跳转页面。
else
{
wx.navigateTo({
url: '../upLoad/upLoad',
})
}
}
})
},
所以我们在调用用户权限前应该先使用wx.getSetting(API接口 获取用户的当前设置)先来判断用户是否授权过此权限,如果没有的话就表明用户并没有进行授权我们再使用wx.authorize(授权弹窗)对用户进行询问授权等操作。