美文网首页
友好处理小程序拒绝授权

友好处理小程序拒绝授权

作者: LuoDada | 来源:发表于2019-01-16 14:26 被阅读0次

    问题:

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

    解决方法:

    1. 在wxml页面放入 button 标签

    <button type="primary" open-type="getUserInfo" bindgetuserinfo="onGotUserInfo">设置用户授权</button>

    <button type="primary" bind:tap="onOpenSetting">设置</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('授权失败')
    
        }
    
      })
    
    }
    

    相关文章

      网友评论

          本文标题:友好处理小程序拒绝授权

          本文链接:https://www.haomeiwen.com/subject/cqrmdqtx.html