- 第一步
wx.getSetting
获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。
wx.getSetting({
success(res) {}
})
- 第二步
判断是否授权 这里以位置授权为例
wx.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation']) {
}
}
})
- 第三步
使用wx.authorize
提前向用户发起授权请求。
调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,
但不会实际调用对应接口。
如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。
getLocation() {
<!--这里获取授权信息的方法-->
}
const self = this
wx.getSetting({
success(res) {
if (!res.authSetting['scope.userLocation']) {
wx.authorize({
scope: 'scope.userLocation',
success() {
//授权成功,调用获取授权信息的方法
self.getLocation()
},
fail() {
//用户拒绝授权 自定义弹窗
wx.showModal({
title: '温馨提示',
content: '位置功能需要您的微信授权才能使用',
cancelText: "不授权",
confirmText: "授权",
confirmColor: "#a08250",
success: function (res) {
if (res.confirm) {
// 这个 API 是基础库 1.1.0 才有的,所以需要做兼容处理:
if (wx.openSetting) {
wx.openSetting({
//进入授权设置页面手动授权
success: function (res) {
self.getLocation()
}
})
}
//低版本兼容 做提示操作
else {
wx.showModal({
title: '授权提示',
content: '位置功能需要您的微信授权才能使用,错过授权页面的处理方法:删除小程序->重新搜索进入->点击授权按钮'
})
}
}
//用户继续拒绝授权。
else if (res.cancel) {
wx.showModal({
title: '温馨提示',
content: '位置获取失败,错过授权页面的处理方法:删除小程序->重新搜索进入->点击授权按钮',
showCancel: false,
confirmColor: "#21C5B4",
success: function (res) {
}
})
}
}
})
}
})
}
}
})
- 第四步
if (!res.authSetting['scope.userLocation']) {} else {
<!--如果以授权直接获取-->
self.getLocation()
}