我呢,最近才研究小程序的开发,遇到了一个对新手来说比较难的问题
1、怎么在进入小程序的时候 就获取用户权限
2、如果用户拒接获取权限,怎么在重新调用,而不是让用户删除小程序后再重新进入
3、返回后重新获取用户信息
---------------------------------------------------
第一个问题:
在小程序里面的 app.js有这么一段
wx.login({ success: res => {// 发送 res.code 到后台换取 openId, sessionKey, unionId } })这个 是开启程序后必备,获取用户的id
// 获取用户信息 wx.getSetting({success: res => { } })这个方法 就是 获取用户授权的 ,通过授权后就可以获取用户信息了
先写一个获取用户信息的方法
// 全局信息保存globalData: { userInfo: {},hasUserInfo: false,userAddress:null },getuserInfo: function () {wx.getUserInfo({success: res => {// 可以将 res 发送给后台解码出 unionIdthis.globalData.userInfo = res.userInfothis.globalData.hasUserInfo = true// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回// 所以此处加入 callback 以防止这种情况if (this.userInfoReadyCallback) {this.userInfoReadyCallback(res)}}})}getlocalinfo:function(){wx.getLocation({success: res => {}})}写好后我们在 wx.getSetting里面调用
wx.getSetting({success: res => {// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框this.getuserInfo();this.getlocalinfo(); } })到这 我们就 已经做好了 进入小程序 自动调用获取权限
-----------------------------------------------------
第二个问题:
微信里的 接口调用 除了 success 还有fail,complete
这里 我们使用 fail
在wx.getUserInfo 及 wx.getLocation 下添加fail
fail:function(){wx.showModal({title: '提示',content: '拒绝授权可能会影响部分功能使用,请删除小程序或设置授权', confirmText: '去设置',success:res => {if(res.confirm){wx.openSetting({})}}})}主要是 里面的 wx.openSetting 这个 会去打开设置页面
其实 也可以不用 wx.showModal() 这个 调用, 直接用wx.openSetting
但是我直接用的时候 设置页面 一片灰色,啥也没有,不知道为啥
到这 就上app.js 整个代码了
//app.jsApp({ onLaunch: function () { // 登录 wx.login({ success: res => {// 发送 res.code 到后台换取 openId, sessionKey, unionId } }) // 获取用户信息 wx.getSetting({success: res => {// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框this.getuserInfo();this.getlocalinfo(); } }) }, globalData: { userInfo: {},hasUserInfo: false,userAddress:null },getuserInfo: function () {wx.getUserInfo({success: res => {// 可以将 res 发送给后台解码出 unionIdthis.globalData.userInfo = res.userInfothis.globalData.hasUserInfo = true// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回// 所以此处加入 callback 以防止这种情况if (this.userInfoReadyCallback) {this.userInfoReadyCallback(res)}},fail:function(){wx.showModal({title: '提示',content: '拒绝授权可能会影响部分功能使用,请删除小程序或设置授权', confirmText: '去设置',success:res => {if(res.confirm){wx.openSetting({})}}})}})},getlocalinfo:function(){wx.getLocation({success: res => {},fail: function () {wx.showModal({title: '提示',content: '拒绝授权可能会影响定位功能使用,请删除小程序或设置授权',confirmText: '去设置',success: res => {if (res.confirm) {wx.openSetting({})}}})}})}})这就是 用户拒绝授权后 重调授权
--------------------------------------
第三个问题很好解决 其实
每个页面 都有一个 onShow 事件 在里面写个wx.getUserInfo就好了
大家还有什么好的想法 可以留言 分享哈
小程序













