微信小程序授权权处理

Author Avatar
julytian 4月 14, 2017
  • 在其它设备中阅读本文章

前言

我们在编写微信小程序登录页时,碰到一个大坑。一般搜索安装小程序打开页面首先都会提示你是否授权,授权就表示我们可以获取到 openid,及本次登录的 会话密钥(session_key)。问题来了,如果用户拒绝不点击授权的话,我们是拿不到用户的信息。并且这个授权弹窗以后是不会再被调用执行了。一脸懵逼

解决方案

翻阅文档没找到结果,到时发现一个新版本的API是可以处理这个情况:wx.openSetting(OBJECT)

基础库版本 1.1.0 开始支持,低版本需做兼容处理

微信客户端 6.5.6 版本开始支持

调起客户端小程序设置界面,返回用户设置的操作结果。

1
2
3
4
5
6
7
8
wx.openSetting({
success: (res) => {
res.authSetting = {
"scope.userInfo": true,
"scope.userLocation": true
}
}
})

这里就可以拿到用户的 userinfo,假如我们在全局 app.js里面定义了, 成功那里可以设置userinfo的值。

1
2
3
globalData: {
userInfo: null,
}

兼容方案(京东)

因为 wx.openSetting(OBJECT)微信客户端 6.5.6 版本 开始支持的,所以必须选择考虑低版本用户。参考京东方案,目前只能找出如果用户拒绝授权只能告诉用户强制删除小程序重新安装去授权登录。真是日了狗了,微信小程序!!!!

目前参考京东小程序的做法,拒绝授权跳到登录失败提示页:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
showModel: function () {
wx.showModal({
content: '你还没微信授权,不能参与商品购买',
confirmColor: '#dd2726',
cancelColor: '#dd2726',
showCancel: false,
confirmText: '我知道了',
success: function (res) {
if (res.confirm) {
wx.navigateTo({
url: "../loginfail/loginfail"
});
}
}
});
}

登录失败