duanzhenzhen

1. 获取微信收货地址(处理用户允许授权、拒绝授权的所有情况)

getAddress: function () {
      var t = this;
      wx.getSetting({
        success(res) {
          console.log("vres.authSetting[\'scope.address\']:", res.authSetting[\'scope.address\'])
          var openid = wx.getStorageSync("openid");
          console.log(openid);
          //根据用户当前设置中的用户授权结果,判断是否包含收货地址授权
          //用户已授权使用收货地址
          if (res.authSetting[\'scope.address\']) {
            console.log("111")
            //选择收货地址
            wx.chooseAddress({
              success(res) {
                app.util.request({
                  url: "entry/wxapp/Member_address",
                  header: {
                    "content-type": "application/x-www-form-urlencoded"
                  },
                  data: {
                    username: res.userName,
                    postalcode: res.postalCode,
                    provincename: res.provinceName,
                    cityname: res.cityName,
                    countyname: res.countyName,
                    detailinfo: res.detailInfo,
                    telnumber: res.telNumber,
                    openid: openid
                  },
                  success: function (res) {
                    console.log(\'成功2\', res);
                    t.setData({
                      noAddress: false
                    })
                    wx.setStorage({
                      key: \'noAddress\',
                      data: t.data.noAddress,
                    })
                  }
                });
              }
            })
            // 用户未同意小程序使用通讯地址时
          } else {
            console.log(\'222\');
            //取消过收货地址授权,调用wx.openSetting(),调起客户端小程序设置界面让用户去打开授权
            if (res.authSetting[\'scope.address\'] == false) {
              wx.openSetting({
                success(res) {
                  console.log(\'333\');
                  console.log(res.authSetting)
                }
              })
            } else {
              //用户当前设置不包含收货地址授权(说明是第一次打开获取用户收货地址信息的授权),调用wx.chooseAddress(),获取用户收货地址
              console.log(\'444\');
              wx.chooseAddress({
                success(res) {
                  app.util.request({
                    url: "entry/wxapp/Member_address",
                    header: {
                      "content-type": "application/x-www-form-urlencoded"
                    },
                    data: {
                      username: res.userName,
                      postalcode: res.postalCode,
                      provincename: res.provinceName,
                      cityname: res.cityName,
                      countyname: res.countyName,
                      detailinfo: res.detailInfo,
                      telnumber: res.telNumber,
                      openid: openid
                    },
                    success: (res)=> {
                      console.log(\'成功1\',res);
                      t.setData({
                        noAddress: false
                      })
                      wx.setStorage({
                        key: \'noAddress\',
                        data: t.data.noAddress,
                      })
                    }
                  });
                }
              })
            }
          }
        }
      })
    }

2. 获取摄像头授权(处理用户允许、拒绝的情况)

实现效果:

(1)首次进入时,调起授权询问框

 

 

(2)若用户拒绝,显示警告框

(3)若用户授权,调起客户端小程序设置界面

 

 

wxml代码

<camera wx:if="{{camera}}" device-position="back" flash="off" binderror="error" class=\'camera_box\'></camera>

js代码

//用户拒绝授权摄像头
  error: function(){
    wx.showModal({
      title: \'警告\',
      content: \'若不授权使用摄像头,将无法使用拍照识别功能!\',
      cancelText: \'不授权\',
      cancelColor: \'#1ba9ba\',
      confirmText: \'授权\',
      confirmColor: \'#1ba9ba\',
      success(res) {
        //允许打开授权页面
        if (res.confirm) {
          //调起客户端小程序设置界面,返回用户设置的操作结果
          wx.openSetting({
            success(res) {
              res.authSetting = {
                "scope.camera": true
              }
            },
            fail(err) {
              console.log(\'err\', err);
            }
          })
        } else if (res.cancel) {//拒绝打开授权页面
          wx.redirectTo({
            url: \'../selcat/selcat\',
          })
        }
      }
    })
  }

补充:项目中,重新调起摄像头授权不能与获取收货地址使用相同逻辑,主要是因为wx.openSetting API必须通过点击才能调用

 


详情,可搜索小程序“垃圾该去哪”

分类:

技术点:

相关文章: