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
      }
  • 相关阅读:
    USACO Name That Number
    USACO Milking Cows
    hdu 1540 Tunnel Warfare (线段树维护左右最长连续区间)
    Contest 1
    JNU周练1026
    树形DP
    Python和C扩展实现方法
    Python模拟C++输出流
    SkipList算法实现
    Python 迭代dict 效率
  • 原文地址:https://www.cnblogs.com/changxue/p/8309607.html
Copyright © 2011-2022 走看看