Appearance
微信授权相关
在微信小程序开发中,诸如 wx.saveImageToPhotosAlbum
等 API 的使用通常先要求获得用户的授权。为了简化此流程并增强代码复用性,我们对这些API进行了智能封装。现在,直接调用这些封装方法,系统将自动检查相应的权限状态。若用户尚未授权,会弹出授权请求;若用户之前已拒绝授权,则会自动引导至设置页面。一旦用户在设置中重新授权,程序将自动回到之前的操作并继续执行。
传统方法 vs 封装方法
传统方法
这里我们用 wx.saveImageToPhotosAlbum
举例,在之前的开发中,如果我们要保存相册,就会这样做:
js
wx.getSetting({
success(res) {
if (!res.authSetting['scope.writePhotosAlbum']) {
// 请求授权
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
// 用户已授权,保存图片
wx.saveImageToPhotosAlbum({
filePath: 'path/to/image',
success(res) {
message.showToast('保存成功')
},
fail(err) {
// do something
}
})
},
fail() {
// 用户拒绝授权,引导到设置页面
wx.openSetting({
...
})
}
})
} else {
// 已有授权,直接保存图片
wx.saveImageToPhotosAlbum({
...
})
}
}
})
封装方法
而现在我们只要这样做:
js
wechat.saveImageToPhotosAlbum({
filePath: 'path/to/image',
success(res) {
message.showToast('保存成功')
},
fail(err) {
...
}
})
通过封装方法,系统会自动检查权限状态,处理用户授权请求,并在拒绝后引导至设置页面。用户授权后,程序自动继续之前的操作。
支持的 API 列表可参考 文档。
getAuthorizedByScope
当需要在操作前显示「保存中」加载提示时,应预先检测授权状态。这时可使用 wechat.getAuthorizedByScope
方法,如下所示:
js
try {
const isAuth = await wechat.getAuthorizedByScope(
wechat.WECHAT_METHOD_TO_SCOPE.saveImageToPhotosAlbum
)
if (isAuth) {
message.showLoading('保存中')
}
await wechat.saveImageToPhotosAlbum({
filePath: 'path/to/image',
success(res) {
message.showToast('保存成功')
},
fail(err) {
// do something
},
})
} catch (err) {
message.hideLoading()
message.showToast('保存失败,请重试')
}