友好处理小程序拒绝授权

问题:

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

解决方法:

  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('授权失败')

    }

  })

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在我的第一篇文章强塞过渡页面中,有介绍我们项目采用静默登录,在某些需要获取用户头像昵称等信息的页面,才去进行授权操...
    舒小妮儿阅读 5,882评论 0 1
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,497评论 0 17
  • 给提问的开发者的建议:提问之前先查询 文档、通过社区右上角搜索搜索已经存在的问题。 写一个简明扼要的标题,并且...
    极乐叔阅读 13,579评论 0 3
  • 真的应该认真的反思一下自己,弟弟上初一了,一副孩子气,根本没人把他当初中的大孩子,全家人还整天批评他做事拖拉,学习...
    皮皮N阅读 300评论 0 0
  • 我做的饺子,哈哈哈 (ಡωಡ)hiahiahia(๑°3°๑)ԅ(¯ㅂ¯ԅ) ps:(味道还不知道,不过看起来还...
    南栗li阅读 171评论 0 0