小程序实现用户地址授权
首先,通过按钮bindtap="getAddress"
绑定点击事件,将获取的用户信息存储到data中;存储后,为避免下一次再出现弹窗,需要在onLoad
中用wx.getSetting
查看用户曾经是否授权,如果授权过,可以直接获取数据并不在出现弹窗.
特别注意:用户点击的如果是取消授权,会出现用户再次点击按钮无法反应的情况,所以这里需要进行处理,即先判断授权情况再决定调用什么方法。
- 获取用户的收货地址
- 绑定点击事件
- 调用小程序内置api获取用户的地址
wx.chooseAddress
- 获取用户对小程序所授予获取地址的权限状态
scope
- 假设用户点击获取地址的提示框的确定,那么
authSetting scope.address
的scope
值为true
直接调用api获取地址 - 假设用户从来没有调用过地址的api,那么
scope
的值为undefined
直接调用api获取地址 - 假设用户点击获取收货地址的提示框取消,那么
scope
的值为false
,此时需要诱导用户打开授权设置页面wx.openSetting
,当用户重新获取地址权限的时候 调用api获取地址
- 假设用户点击获取地址的提示框的确定,那么
onLoad: function () {
//获得地址信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.address']) {
wx.chooseAddress({
success: res => {
this.setData({
hasAddress: true,
address: res
})
}
})
}
}
})
},
// 获取地址权限
getAddress(){
wx.getSetting({
success: (result)=>{
const scopeAddress = result.authSetting["scope.address"]
if(scopeAddress===true||scopeAddress===undefined){
wx.chooseAddress({
success: (result)=>{
console.log(result)
this.setData({
address:result
})
},
});
}
else{
wx.openSetting({
success:(result)=>{
console.log(result)
}
})
}
}
});
}
小程序实现用户信息授权
首先,通过按钮的open-type="getUserInfo"
向用户获取权限,然后通过bindgetuserinfo="getUserInfo"
绑定回调函数(函数名字自定义),将获取的用户信息存储到data中;存储后,为避免下一次再出现弹窗,需要在onLoad
中用wx.getSetting
查看用户曾经是否授权,如果授权过,可以直接获取数据并不在出现弹窗
onLoad: function () {
wx.getSetting({
success: res => {
console.log(res)
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
console.log(res)
this.setData({
login: true,
avatarUrl: res.userInfo.avatarUrl,
userInfo: res.userInfo,
cloudID: getApp().globalData.cloudID
})
}
})
}
}
})
},
getUserInfo() {
wx.getSetting({
success: (res) => {
const scopeUserInfo = res.authSetting["scope.userInfo"]
if (scopeUserInfo === true) {
wx.getUserInfo({
success: (res) => {
this.setData({
avatarUrl: res.userInfo.avatarUrl,
userInfo: res.userInfo,
cloudID: getApp().globalData.cloudID
})
},
});
}
}
});
}
总结
- 获取用户地址,绑定点击事件并考虑用户点击的三种情况。
- 获取用户权限可以利用按钮的
open-type
属性
有用的话点个赞哦!