小程序实现用户地址和用户信息授权

小程序实现用户地址授权

首先,通过按钮bindtap="getAddress"绑定点击事件,将获取的用户信息存储到data中;存储后,为避免下一次再出现弹窗,需要在onLoad中用wx.getSetting查看用户曾经是否授权,如果授权过,可以直接获取数据并不在出现弹窗.

特别注意:用户点击的如果是取消授权,会出现用户再次点击按钮无法反应的情况,所以这里需要进行处理,即先判断授权情况再决定调用什么方法。

点击按钮后的提示信息

  1. 获取用户的收货地址
    1. 绑定点击事件
    2. 调用小程序内置api获取用户的地址 wx.chooseAddress
  2. 获取用户对小程序所授予获取地址的权限状态scope
    1. 假设用户点击获取地址的提示框的确定,那么authSetting scope.addressscope值为true 直接调用api获取地址
    2. 假设用户从来没有调用过地址的api,那么scope的值为undefined直接调用api获取地址
    3. 假设用户点击获取收货地址的提示框取消,那么scope的值为false,此时需要诱导用户打开授权设置页面wx.openSetting,当用户重新获取地址权限的时候 调用api获取地址

授权设置页面

用户手动开启权限后再次点击就会正常调用获取地址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
              })
            },
          });
        } 
      }
    });
 }

总结

  1. 获取用户地址,绑定点击事件并考虑用户点击的三种情况。
  2. 获取用户权限可以利用按钮的open-type属性

有用的话点个哦!

发布了128 篇原创文章 · 获赞 52 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44523860/article/details/105332127