微信小程序> 微信小程序之重新调用权限获取

微信小程序之重新调用权限获取

浏览量:612 时间: 来源:叶落挽枫

我呢,最近才研究小程序的开发,遇到了一个对新手来说比较难的问题

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就好了 

大家还有什么好的想法 可以留言 分享哈

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎