微信小程序获取用户信息“授权失败”场景的处理
很多的时候我们在处理小程序功能的时候需要用户获取用户信息,但是呢为了信息安全,用户不授权导致授权失败场景;但是小程序第二次不在启动授权信息弹层,为了用户体验,可以用以下方式处理:
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
  }
微信小程序获取用户信息“授权失败”场景的处理的更多相关文章
- 微信小程序 获取用户信息授权
		login.wxml界面 获取用户授权可以用微信提供的接口 wx.authorize, 但是获取用户信息的授权用这个接口不会弹出授权窗口 <button class="submit-b ... 
- 微信小程序 获取用户信息并保存登录状态
		微信小程序 获取用户信息并保存登录状态:http://www.360doc.com/content/18/0124/11/9200790_724662071.shtml 
- Laravel wxxcx 微信小程序获取用户信息
		wxxcx 是Laravel5微信小程序登录获取用户信息扩展 部署 12345678 # 安装$ composer require iwanli/wxxcx# 注册服务# 在 /config/app. ... 
- 微信小程序获取用户信息
		App({ appData: { userInfo:{ user_portraitUrl: "", user_nick: "", user_gender: 0, ... 
- 微信小程序获取用户信息,解密encryptedData 包括敏感数据在内的完整用户信息的加密数据
		package com.iups.wx.wxservice; import java.io.UnsupportedEncodingException; import java.security.Alg ... 
- 微信小程序-获取用户信息(getUserInfo)
		当小程序抹杀掉这个接口的时候,多少人心凉了.. 作为一个初级web前端开发,我是更加懵逼,小程序员跑路了... 当时以及现在用的办法就是: 1.增加一个登陆或授权页 2.上线以后自动获取 3.增加一个 ... 
- 微信小程序 获取用户信息 encryptData解密 C#版本
		最近学习小程序开发,需要对encryptData解密,获取用户信息,官方源码没有C#版本,网上的资料比较杂,有的使用还有问题,下面贴一下自己亲试可以使用的一个源码 1.code 换取 session_ ... 
- [转]wx.getUserInfo(OBJECT) 微信小程序 获取用户信息
		本文转自:http://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html wx.getUserInfo(OBJECT) 获取用户信息,withCreden ... 
- 微信小程序 - 获取用户信息的几种方式
		1. 老接口(上线使用-测试用button先获取用户信息) // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, ses ... 
随机推荐
- CentOS安装pip
			环境 操作系统:CentOS 6.7 32-bit Python:2.6.6 安装 先安装setuptools和wget yum -y install wget wget https://pypi.p ... 
- 2017-7-19-每日博客-关于Linux下的CentOS中文件夹基本操作命令.doc
			CentOS中文件夹基本操作命令 文件(夹)查看类命令 ls--显示指定目录下内容 说明:ls 显示结果以不同的颜色来区分文件类别.蓝色代表目录,灰色代表普通文件,绿色代表可执行文件,红色代表压缩文件 ... 
- TiXmlHandle的使用-简化tinyxml的代码
			借鉴于:http://www.cppblog.com/elva/archive/2008/04/24/47907.html 例如: <?xml version="1.0" s ... 
- noip模拟赛 保留道路
			[问题描述] 很久很久以前有一个国家,这个国家有N个城市,城市由1,2,3,…,N标号,城市间有M条双向道路,每条道路都有两个属性g和s,两个城市间可能有多条道路,并且可能存在将某一城市与其自身连接起 ... 
- bzoj 1113 [Poi2008]海报PLA  单调栈
			[Poi2008]海报PLA Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1304 Solved: 896[Submit][Status][Dis ... 
- ACM2647拓扑排序逆运算
			2647题是对工人排序问题,不是从头到尾排序,而是从尾到头排序: 代码中用到vector和queue容器,权当练习. 用广搜进行拓扑排序的逆运算. #include<iostream> # ... 
- Webservice与CXF框架快速入门
			1. Webservice Webservice是一套远程调用技术规范 远程调用RPC, 实现了系统与系统进程间的远程通信.java领域有很多可实现远程通讯的技术,如:RMI(Socket + 序列化 ... 
- Android如何在初始化的时候获取加载的布局的宽高
			在自定义ListView中,需要将下拉刷新的View在初始化的时候设置padding隐藏起来,这时就要在初始化的时候获得要加载的布局View的高度. private View headView; he ... 
- mysql 事务,锁,与四大隔离级别
			概念 事务 原子性:事务必须是一个自动工作的单元,要么全部执行,要么全部不执行. 一致性:事务结束的时候,所有的内部数据都是正确的. 隔离性:并发多个事务时,各个事务不干涉内部数据,处理的都是另外一个 ... 
- js对数组的常用操作
			在js中对数组的操作是经常遇到的,我呢在这就列一下经常用到的方法 删除数组中的元素: 1.delete方法:delete删除的只是数组元素的值,所占的空间是并没有删除的 代码: var arr=[12 ... 
