众所周知,小程序进入首先都要进行微信授权的,那万一用户不小心点了拒绝按钮怎么办呢?不要慌,官方早已预料到此情况,并提供了api供开发者使用,下面就一起来研究下api吧
一、API接口
wx.openSetting(OBJECT)调起客户端小程序设置界面,返回用户设置的操作结果。注:设置界面只会出现小程序已经向用户请求过的权限。wx.getSetting(OBJECT)获取用户的当前设置。注:返回值中只会出现小程序已经向用户请求过的权限。
二、API调用顺序
首先要知道咱们解决的问题是什么,其次才是怎么解决问题。
需要解决的问题:用户拒绝授权,在需要其授权的信息的页面打开授权,让用户再次进行授权(ps:表达能力有限)
分析问题:1.拒绝授权;2.再次授权
1:既然已拒绝授权,那么肯定已经调用了wx.getUserInfo()方法,那么先看下这个api吧
wx.getUserInfo({success: function (res) {//用户同意授权时返回的数据var userInfo = res.userInfowx.setStroageSync('userInfo', userInfo)//获app.userInfo = userInfovar nickName = userInfo.nickNamevar avatarUrl = userInfo.avatarUrlvar gender = userInfo.gender //性别 0:未知、1:男、2:女var province = userInfo.provincevar city = userInfo.cityvar country = userInfo.country},fail: function (ret) {//用户拒绝授权时的操作//
}})
2.再次授权
// 在需要用户授权时调用wx.getSetting()
wx.getSetting({success: function (res) {if (res.authSetting["scope.userInfo"]) {//用户已授权
wx.getUserInfo({success: function (data) {var scopeData = data.userInfo;wx.setStorageSync('userInfo', scopeData);}})} else {//用户未授权// 可以添加个提示信息,在这里就我就不写了哈wx.openSetting({//打开小程序设置页面,用户自己选择授权
success: function (res) {res.authSetting = {"scope.userInfo": true}}})}}})
3.注
最后一点要注意,在小程序的设置页面,用户点击按钮是没有办法进行其操作的,要在其返回页面的onShow方法里进行wx.getSetting的success()操作
更多专业前端知识,请上 【猿2048】www.mk2048.com