收藏
回答

wx.authorize在没有某一权限的情况下调用仍然会走失败的方法

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.authorize 工具 7.0.8 2.8.3

wx.getSetting({

success(res) {

console.log(res)

if (!res.authSetting['scope.userLocation']) {

console.log(11111)

wx.authorize({

scope: 'scope.userLocation',

success() {

console.log(111)

},

fail(err){

console.log(err)

}

})

}else{

that.fnGetLocation()

}

}

})

比如说我要定位,但是用户开始拒绝了授权定位,我想用户再次授权调用上述一系列方法并不会成功,wx.authorize仍然会走fail的方法,无法通过它改变授权状态

最后一次编辑于  2019-09-30
回答关注问题邀请回答
收藏

3 个回答

  • A晨露夕逝(999+)
    A晨露夕逝(999+)
    2019-09-30

    //判断是否有相应权限,true则直接执行,false需要跳转设置页

      //name取值例:

      /*scope.userInfo wx.getUserInfo 用户信息

        scope.userLocation wx.getLocation, wx.chooseLocation 地理位置

        scope.address wx.chooseAddress 通讯地址

        scope.invoiceTitle wx.chooseInvoiceTitle 发票抬头

        scope.invoice wx.chooseInvoice 获取发票

        scope.werun wx.getWeRunData 微信运动步数

        scope.record wx.startRecord 录音功能

        scope.writePhotosAlbum wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum 保存到相册

        scope.camera <camera /> 组件 摄像头

      */

      getAuth:function(name,callback){

        wx.getSetting({

          success(res) {

            if (res.authSetting['scope.' + name] != undefined && res.authSetting['scope.' + name] != true) {

              //用户主动取消过

              callback(false);

            } else if (res.authSetting['scope.' + name] == undefined) {

              //第一次向用户获取

              callback(true);

            } else {

              //用户已授权

              callback(true);

            }

          }

        })

      },

    //以上是我将所有权限进行了封装在app.js里面,下面举个例(获取微信步数)调用:

    const app=getApp();

    app.getAuth('werun', function (res) {

            if (res)

              wx.getWeRunData({

                success(res) {

                  //这个里面是表示成功直接处理业务

                  // 拿 encryptedData 到开发者后台解密开放数据

                  const encryptedData = res.encryptedData

                  // 或拿 cloudID 通过云调用直接获取开放数据

                  const iv = res.iv

                  console.log(res)

                  that.getRunData(encryptedData, iv)//这个请无视,业务函数

                }

              })

            else

              wx.showModal({

                title: '获取权限',

                content: '请前往开启微信步数权限',

                success: function (res) {

                  if (res.confirm) {

                    wx.openSetting()

                  } else if (res.cancel) {

                    console.log('用户点击取消')

                  }

                }

              })

          })  


    2019-09-30
    有用
    回复 2
    • 家里的土豆子不多了
      家里的土豆子不多了
      2019-09-30
      原来wx.showModal的确定也可以打开wx.openSetting,我以为只有button才能打开wx.openSetting
      2019-09-30
      回复
    • A晨露夕逝(999+)
      A晨露夕逝(999+)
      2019-09-30回复家里的土豆子不多了
      最开始我showModal都不写得后来微信改版了几乎所有接口都要手动触发
      2019-09-30
      回复
  • 家里的土豆子不多了
    家里的土豆子不多了
    2019-09-30

    好的

    2019-09-30
    有用
    回复
  • 王浩Hanks🇨🇳
    王浩Hanks🇨🇳
    2019-09-30

    提示用户自己去右上角把关闭的权限打开

    2019-09-30
    有用
    回复
登录 后发表内容
问题标签