Happy New Year!

关于微信小程序拒绝授权后,重新授权并获取用户信息

最近公司做了一些有关微信小程序的项目,涉及到授权获取用户基本信息,但是在拒绝授权之后就不会再出现授权窗口;

  看网上也有很多人遇到了同样的问题,所以记录下来我的处理方法,供大家和自己学习和记录:

  当调用小程序 wx.getUserInfo(OBJECT) 获取用户基本信息时,需要用户进行授权操作,如果用户点击了拒绝,则再次调用该方法就不会出现对应的授权窗口,很是让人困惑;

  找了许久,最后让我发现了它:------> wx.openSetting(OBJECT),下面让我们认识一下:

  wx.openSetting(OBJECT)

  设置:调起客户端小程序设置界面,返回用户设置的操作结果;基础库 1.1.0 开始支持,低版本需做“兼容处理

  

  

  通过该方法可继续进行授权操作,不多做解释,直接上代码:

复制代码
复制代码
  1 var loginStatus = true;
  2 getPromission: function() {
  3     if (!loginStatus) {
  4       wx.openSetting({
  5         success: function (data) {
  6           if(data) {
  7             if (data.authSetting["scope.userInfo"] == true) {
  8               loginStatus = true;
  9               wx.getUserInfo({
 10                 withCredentials: false,
 11                 success: function (data) {
 12                   console.info("2成功获取用户返回数据");
 13                   console.info(data.userInfo);
 14                 },
 15                 fail: function () {
 16                   console.info("2授权失败返回数据");
 17                 } 21               });
 22             }
 23           } 25         },
 26         fail: function () {
 27           console.info("设置失败返回数据");
 28         } 32       });
 33     }else {
 34       wx.login({
 35         success: function (res) {
 36           if (res.code) { 38             wx.getUserInfo({
 39               withCredentials: false,
 40               success: function (data) {
 41                 console.info("1成功获取用户返回数据");
 42                 console.info(data.userInfo);
 43               },
 44               fail: function () {
 45                 console.info("1授权失败返回数据");
 46                 loginStatus = false;
 47                 // 显示提示弹窗
 48                 wx.showModal({
 49                   title: '提示标题',
 50                   content: '提示内容',
 51                   success: function (res) {
 52                     if (res.confirm) {
 53                       console.log('用户点击确定')
 54                     } else if (res.cancel) {
 55                       wx.openSetting({
 56                         success: function (data) {
 57                           if (data) {
 58                             if (data.authSetting["scope.userInfo"] == true) {
 59                               loginStatus = true;
 60                               wx.getUserInfo({
 61                                 withCredentials: false,
 62                                 success: function (data) {
 63                                   console.info("3成功获取用户返回数据");
 64                                   console.info(data.userInfo);
 65                                 },
 66                                 fail: function () {
 67                                   console.info("3授权失败返回数据");
 68                                 } 72                               });
 73                             }
 74                           } 76                         },
 77                         fail: function () {
 78                           console.info("设置失败返回数据");
 79                         } 83                       });
 84                     }
 85                   }
 86                 });
 87               } 91             });
 92           }
 93         },
 94         fail: function () {
 95           console.info("登录失败返回数据");
 96         }100       });
101     }
102   }
复制代码
复制代码

  以上是我实现的内容,没做处理,希望对大家有帮助!!!喷子勿喷

posted @   义美-小义  阅读(4188)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
返回顶部小火箭
世界很公平,想要最好,就一定得付出!
x
github主页
点击右上角即可分享
微信分享提示