微信小程序“授权失败”场景的处理
时间:2022-04-23
本文章向大家介绍微信小程序“授权失败”场景的处理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
很多的时候我们在处理小程序功能的时候需要用户获取用户信息,但是为了信息安全,用户不授权导致授权失败场景;但是小程序第二次不在启动授权信息弹层,为了用户体验,可以用以下方式处理:
-
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
-
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在 React 中实现 keep alive(可参与文末讨论哦)
- Android仿淘宝切换商品列表布局效果的示例代码
- android 右滑返回的示例代码
- 关于linux服务器hosts文件配置详解
- android中Glide实现加载图片保存至本地并加载回调监听
- CentOS8部署LNMP环境之编译安装mysql8.0.29的教程详解
- Android获取内置sdcard跟外置sdcard路径
- Android简易电话拨号器实例详解
- Linux 为特定的用户或用户组启用或禁用 SSH的方法
- Android 中IntentFilter的匹配规则实例详解
- Android VideoCache视频缓存的方法详解
- Android标题栏最右边添加按钮的实例
- Ubuntu18.04系统安装、配置Redis及phpredis扩展操作详解
- Android电话拨号器实例详解
- Android获取App内存使用情况的方法