zoukankan      html  css  js  c++  java
  • 微信小程序获取用户信息“授权失败”场景的处理

    很多的时候我们在处理小程序功能的时候需要用户获取用户信息,但是呢为了信息安全,用户不授权导致授权失败场景;但是小程序第二次不在启动授权信息弹层,为了用户体验,可以用以下方式处理:

    function isEmptyObject(e) {
      //对象是否为空;判断是否是第一次授权,非第一次授权且授权失败则进行提醒
      var t;
      for (t in e)
        return !1;
      return !0
    }
    function checkSettingStatu(cb) {
      //授权处理
      var that = this;
      // 判断是否是第一次授权,非第一次授权且授权失败则进行提醒
      wx.getSetting({
        success: function success(res) {
          var authSetting = res.authSetting;
          if (isEmptyObject(authSetting)) {
            // console.log('首次授权');
          } else {
            // console.log('不是第一次授权', authSetting);
            // 没有授权的提醒
            if (authSetting['scope.userInfo'] === false) {
              wx.showModal({
                title: '用户未授权',
                content: '如需正常使用此小程序功能,请您按确定并在设置页面授权用户信息',
                showCancel: false,
                success: function (res) {
                  // 此处为了用于 Android 系统区分点击蒙层关闭还是点击取消按钮关闭省去了res.confirm,res.cancel判断
                  // 点击蒙层同样触发开启设置
                  wx.openSetting({
                    success: function success(res) {
                      if (res.authSetting['scope.userInfo'] === false) {
                        checkSettingStatu(cb);
                      } else {
                        userinfor();
                      }
                    }
                  });
    
                }
              })
            }
          }
        }
      });
    }
    function userinfor(){
        //获取用户信息
        wx.login({
          success: function (res) {
            var code = res.code;
            if (res.code) {
              wx.getUserInfo({
                fail: function (res) {
                  checkSettingStatu();
                },
                success: function (data) {
                  var encryptedData = data.encryptedData;
                  var iv = data.iv;
                  wx.request({
                    url: 'XXXX',
                    data: {
                      "json": JSON.stringify({
                        "type": "small_wechat_new",
                        "code": code,
                        "encryptedData": encryptedData,
                        "iv": iv
                      })
                    },
                    method: 'POST',
                    header: {
                      'content-type': 'application/x-www-form-urlencoded'
                    },
                    success: function (res) {
                      //wx.setStorageSync('user_id', res.data.data.user_id);
                      //wx.setStorageSync('token', res.data.data.token);
                      //wx.setStorageSync('avatar', res.data.data.avatar);
                      //wx.setStorageSync('nickname', res.data.data.nickname);
                    }
                  })
                }
              })
            }
          }
        })
      }
    
      module.exports = {
        checkSettingStatu: checkSettingStatu,
        userinfor: userinfor
      }
  • 相关阅读:
    mac 电脑自动登录服务器
    prometheus-operator 监控 k8s 外部集群
    生产prometheus-operator 监控二进制kubernetes
    微信小程序-nginx-https 代理后端服务
    Redis 高可用之哨兵模式
    Redis 高可用之数据持久化
    服务之间连接不上问题分析
    prometheus 告警指标
    错误代码:0x800706BE 解决方法
    泛微OA服务器更改IP地址后EMobile出现“调用远端服务器接口时发生错误(122)”的提示
  • 原文地址:https://www.cnblogs.com/changxue/p/8309607.html
Copyright © 2011-2022 走看看