微信小程序各种权限处理授权逻辑,看这篇就够了
前言:
先看下效果:
微信小程序授权弹框操作
这篇博客不讲wx.getUserInfo的授权允许和拒绝的逻辑,只讲其他权限

从使用功能开始,详细的授权和拒绝授权以及在设置中再次授权的逻辑处理如下:
一、先贴一下通过wx.getSetting 获取各种权限的信息打印:
(以位置权限为例,其他权限相同)
1、若从未请求过权限(以位置权限为例)
//wx.getSetting()结果:
{
"errMsg": "getSetting:ok",
"authSetting": {
"scope.address": true,
"scope.invoice": true,
"scope.invoiceTitle": true,
"scope.userInfo": true
}
}
如打印结果所示,第一次请求时authSetting中只有4个字段,若对除这4个字段之外的其他权限取值(如位置权限:scope.userLocation),结果是undefined。这里可以做是否为第一次获取权限的判断
2、请求过权限但未允许(以位置权限为例)
//wx.getSetting()结果:
{
"errMsg": "getSetting:ok",
"authSetting": {
"scope.userLocation": false,
"scope.address": true,
"scope.invoice": true,
"scope.invoiceTitle": true,
"scope.userInfo": true
}
}
此时对scope.userLocation取值为false ,这个时候要通过判断提示用户是否要去设置中心设置。
3、跳转设置中心设置权限(以位置权限为例)
通过wx.open跳转到设置中心去设置权限,代码如下:
wx.openSetting({
success: res => {
if (res.authSetting['scope.userLocation']) {
// 授权成功
}
}
});
//wx.openSetting() 允许授权,返回结果:
{
"errMsg": "openSetting:ok",
"authSetting": {
"scope.userLocation": true
}
}
//wx.openSetting() 拒绝授权,返回结果:
{
"errMsg": "openSetting:ok",
"authSetting": {
"scope.userLocation": false
}
}
日常情况就是上面那几种,测试的时候将按钮都点一遍就可以覆盖到上面那几种情况,下面写具体判断流程,处理了对一种权限申请的允许和拒绝等逻辑
二:具体使用
1、单一权限
设有需求:要具有位置的使用权限,才能使用B功能。处理情况如下:
// 功能B使用前判断位置使用权限
getLocationAuthorize: function (e) {
var self = this
wx.getSetting(

本文详细介绍了微信小程序中各种权限的处理逻辑,包括获取权限状态、首次请求权限、用户拒绝后的处理以及如何引导用户到设置中心授权。示例代码涵盖了位置、麦克风和摄像头权限的判断和授权流程,帮助开发者全面掌握小程序权限管理。

2773

被折叠的 条评论
为什么被折叠?



