友好处理小程序拒绝授权

问题:

在获取微信用户信息时,会出现一个授权弹窗,需要用户点击“允许”才能正常获取。若用户点击“拒绝”,不仅本次登录会失败,而且一定时间内后续登录也会失败,因为在短期内再次调用微信用户信息接口时,微信不会再向用户展示授权弹窗,而是直接按失败返回。这样导致用户只要拒绝过一次,即使想授权也难以再次操作。

解决方法:

  1. 在wxml页面放入 button 标签

(也可以通过button open-type="openSetting"调用)

  1. 添加相应的事件
   /**

    * 设置用户信息授权

  */

onGotUserInfo (e) {

  if (e.detail.userInfo) { // 用户授权成功

    // 获取用户信息成功,进行后续流程

  } else { // 当用户拒绝授权时进入

    wx.showModal({

      title: '提示',

      content: '尚未进行授权,如不授权将无法使用部分功能',

      showCancel: false, // 只显示成功按钮

      success () {

        wx.openSetting({

          success (res) {

            if (res.authSetting['scope.userInfo']) { // true=>成功授权

              wx.getUserInfo({

                withCredentials: 'true',

                success: (result)=>{

                  // 获取用户信息成功,进行后续流程

                },

                fail: ()=>{}

              })

            }

          },

          fail (){}

        })

      }

    })

  }
}

  /**

  *授权设置

  */

   onOpenSetting () {

  wx.openSetting({

    success (res) { // 只有通过真机调试,在设置界面点击返回按钮后才会触发(小程序模拟器暂不支持)

      if (res.authSetting['scope.userInfo']) { // true 授权成功

        // 获取用户信息成功,进行后续流程

      } else {

        console.log('授权失败')         

      }

    },

    fail () {

      console.log('授权失败')

    }

  })

}

你可能感兴趣的:(友好处理小程序拒绝授权)