1.授权订阅消息
wx.requestSubscribeMessage({
tmplIds: _this.data.mobanId, //接口获取模板id
success(res) {
wx.reLaunch({ url: '../../pages/index/index', })
},
fail: function (res) {
wx.openSetting({
success: (data) => {
_this.setData({
returnBack: true //开启配置页时返回指定页面判断
})
},
})
}
})
ps:
①授权前面不能嵌套方法或者多余代码,不然会调取失败,比如在拿到模板id 之后再调取授权等(亲试无效)
②无需判断是否已经授权
2.微信手机号授权(一般用于微信登录)
<button class='btnPhone'
bindgetphonenumber="getPhoneNumber"
open-type="getPhoneNumber">
微信快捷登录
</button>
getPhoneNumber(e) {
let _this = this
if (e.detail.errMsg == 'getPhoneNumber:ok') {
let param = {
iv: e.detail.iv,
encryptData: e.detail.encryptedData
}
// 微信登录
wx.login({
success: (res) => {
param.code = res.code
// 业务需求拿到手机号再进行登录所以要调解密接口
api.requestLoading('url', param, 'post', function (res) {
if (res.code == 1) {
//调取登录接口
} else {
// 解密失败
}
})
}
})
}
}
ps:其他授权方式大都类似,具体还是根据业务需求
3.保存图片授权
ps: 保存图片较为特殊, 需要两个button触发
原因:当拒绝授权时再次授权保存,一直是授权失败,走fail
解决:设置变量,拒绝授权后显示另一个按钮(因为保存图片授权只有用户点击触发才能再次调起,亲测),opensetting去设置页码授权
saveImg (e) {
var _this = this;
//先判断是否授权
wx.getSetting({
success: function (res) {
if (!res.authSetting['scope.writePhotosAlbum']) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success: function (res) {
//保存图片接口
_this.clickSaveImg()
},
fail: function (res) {
// 如果没有授权
wx.showModal({
title: '提示',
content: '请点击下方授权保存',
showCancel: false
})
_this.setData({
// 显示button 按钮,引导授权
allow: false
})
}
})
} else {
//已经授权直接保存
_this.clickSaveImg()
}
}
})
}
// 引导授权
handleSetting(e) {
let that = this;
//对用户的设置进行判断,如果没有授权,即使用户返回到保存页面,
//显示的也是“去授权”按钮;同意授权之后才显示保存按钮
if (!e.detail.authSetting['scope.writePhotosAlbum']) {
wx.showModal({
title: '警告',
content: '若不打开授权,则无法将图片保存在相册中!',
showCancel: false })
that.setData({ allow: false })
} else {
wx.showModal({
title: '提示',
content: '您已授权,赶紧将图片保存在相册中吧!',
showCancel: false
})
that.setData({ allow: true })
}
}
clickSaveImg() {
let _this = this
var imgUrl = _this.data.imgSrc
wx.showLoading({ title: '图片保存中' })
wx.downloadFile({
//下载文件资源到本地,客户端直接发起一个 HTTP GET 请求,
//返回文件的本地临时路径
url: imgUrl, success: function (res) {
// 下载成功后再保存到本地
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
//返回的临时文件路径,下载后的文件会存储到一个临时文件
success: function (res) {
wx.hideLoading()
setTimeout(function () {
wx.showToast({
title: '成功保存到相册',
icon: 'success'
})
}, 500)
},
fail: function (res) { }
})
}
})
}