判断用户是否已经授权

2/20/2024 wx
module.exports = {

  /**
   * 检查摄像头 麦克风权限
   *
   * resolve 成功  reject 失败{camera,record}
   */
  checkCameraAndRecord: () => {

    return new Promise((resolve, reject) => {
      //检查授权
      wx.getSetting({
        success(result) {

          //有摄像头和麦克风权限
          if (result.authSetting['scope.camera'] && result.authSetting['scope.record']) {
            console.log("有camera和record权限!")
            resolve();

            //没有摄像头权限
          } else if (!result.authSetting['scope.camera'] || !result.authSetting['scope.record']) {
            //授权摄像头
            wx.authorize({
              scope: 'scope.camera',
              success(res) {
                console.log("camera授权成功!")
              },
              fail(res) {
                //授权麦克风
                console.log("camera授权失败!",res)
              },
              complete() {
                wx.authorize({
                  scope: 'scope.record',
                  success(res) {
                    console.log("record授权成功!")
                  },
                  fail(res) {
                    console.log("record授权失败!",res)
                    // reject({record:false})
                  },
                  complete() {
                    //重新获取配置
                    wx.getSetting({
                      success(res) {
                        var authCamera = !!res.authSetting['scope.camera'],
                          authRecord = !!res.authSetting['scope.record'];
                        if (!authCamera || !authRecord) {
                          var contentMsg = '您没有授权开启' + (authCamera ? '' : '摄像头  ') + (authRecord ? '' : '麦克风 ') + ',请前往开启。';
                          //弹框去开启
                          wx.showModal({
                            content: contentMsg,
                            showCancel: false,
                            success(res) {
                              wx.openSetting({
                                success: (res) => {

                                  if (res.authSetting['scope.camera'] && res.authSetting['scope.record']) {
                                    resolve();
                                  } else {
                                    reject({
                                      camera: authCamera,
                                      record: authRecord
                                    })
                                  }


                                }
                              })
                            }
                          })
                        } else {
                          resolve();
                        }
                      }
                    })
                  }
                })

              }
            })



          }




        },
        fail(err){
          console.log(err)
        }
      })
    })


  },

   /**
   * 定位位置权限
   *
   * resolve 成功  reject 失败{userLocation1}
   */
  checkLocationPermission: () => {
    // var _this = this;
    return new Promise((resolve, reject) => {
      wx.getSetting({
        success: (res) => {
          console.log('用户首次进入页面授权')
          const userLocation = res.authSetting['scope.userFuzzyLocation']
          if (!userLocation) {

            wx.authorize({
              scope: 'scope.userFuzzyLocation',
              success(res) {
                console.log("userFuzzyLocation授权成功!")
              },
              fail(res) {
                //授权麦克风
                console.log("userFuzzyLocation授权失败!",res)
              },
              complete() {
                wx.getSetting({
                      success(res) {
                        var userLocation1 = !!res.authSetting['scope.userFuzzyLocation'];
                        if (!userLocation1) {
                          //弹框去开启
                          wx.showModal({
                            content: '需要获取您的地理位置,请确认授权',
                            showCancel: false,
                            success(res) {
                              wx.openSetting({
                                success: (res) => {

                                  if (res.authSetting['scope.userFuzzyLocation']) {
                                    resolve();
                                  } else {
                                    reject({
                                      userLocation1
                                    })
                                  }


                                }
                              })
                            }
                          })
                        } else {
                          resolve();
                        }
                      }
                    })


              }
            })
            //未授权

          } else {
            console.log('授权成功')
            //调用wx.getLocation的API
            resolve();
          }
        }
      })
    })



  }

}