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
      }
  • 相关阅读:
    Day3学习笔记
    Day2学习笔记
    Day1学习笔记
    中文标识
    about original idea
    那些和matlab有关的
    GRE Sub math 报名
    虽然实际没有什么用,但是可能会有理论上的意义吧
    latex相关
    对venturelli theorem的重新认识
  • 原文地址:https://www.cnblogs.com/changxue/p/8309607.html
Copyright © 2011-2022 走看看