微信小程序没有授权时的处理方法 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

微信小程序没有授权时的处理方法

发表时间:2021-3-31

发布人:葵宇科技

浏览次数:111

背景:微信小程序很多都需要用户的微信授权,可是很多瓜皮用户会狠心拒绝,但是不管用户怎么操作,我们必须让用户能够更好的体验小程序。

过程:我把用户的操作分四种。

1)用户直接同意授权。 
2)用户拒绝授权,进入引导弹窗,用户继续拒绝授权。 
3)用户拒绝授权,进入引导弹窗,用户点击授权,进入授权设置页,用户点击授权。 
4)用户拒绝授权,进入引导弹窗,用户点击授权,进入授权设置页,用户不点击授权,直接退出。

解决方法:

  1. toMap() {
  2. let that = this;
  3. wx.getSetting({
  4. success(res) {
  5. if (!res.authSetting['scope.userLocation']) {//如果没有授权
  6. wx.authorize({
  7. scope: 'scope.userLocation',
  8. success: res => {//第一种情况:用户同意授权
  9. // 发送地图
  10. that.toMapFin();
  11. }, fail: res => {//用户点击了取消授权,引导其去授权
  12. wx.showModal({
  13. title: '提示',
  14. content: '定位需要您的微信授权才能使用哦~ 错过授权页面的处理方法:删除小程序->重新搜索五百强名片进入->点击授权按钮',
  15. cancelText: "不授权",
  16. confirmText: "授权",
  17. confirmColor: "#a08250",
  18. success: function (res) {
  19. if (res.confirm) {
  20. // 这个 API 是基础库 1.1.0 才有的,所以需要做兼容处理:
  21. if (wx.openSetting) {
  22. wx.openSetting({
  23. success: function (res) {//第三种情况:用户拒绝授权,进入引导弹窗,用户点击授权,进入授权设置页,用户点击授权。
  24. that.toMapFin();
  25. }
  26. })
  27. } else {
  28. wx.showModal({
  29. title: '授权提示',
  30. content: '定位需要您的微信授权才能使用哦~ 错过授权页面的处理方法:删除小程序->重新搜索五百强名片进入->点击授权按钮'
  31. })
  32. }
  33. } else if (res.cancel) {//第二种情况:用户拒绝授权,进入引导弹窗,用户继续拒绝授权。
  34. wx.showModal({
  35. title: '提示',
  36. content: '定位失败,错过授权页面的处理方法:删除小程序->重新搜索五百强名片进入->点击授权按钮',
  37. showCancel: false,
  38. confirmColor: "#c00",
  39. success: function (res) {
  40. if (res.confirm) {
  41. console.log('用户点击确定')
  42. }
  43. }
  44. })
  45. }
  46. }
  47. })
  48. }
  49. })
  50. } else {//用户原来已经通过了授权,不必重新调起授权界面。
  51. that.toMapFin();
  52. }
  53. }
  54. })
  55. },
  1. toMapFin(){
  2. wx.chooseLocation({
  3. success: res => {
  4. console.log(res)
  5. let address = res.address + res.name;
  6. this.setData({
  7. "local.address": [address],
  8. "local.longitude": res.longitude,
  9. "local.latitude": res.latitude
  10. })
  11. },
  12. fail: res => { //第四种情况:用户拒绝授权,进入引导弹窗,用户点击授权,进入授权设置页,用户不点击授权,直接退出。
  13. wx.showModal({
  14. title: '提示',
  15. content: '定位失败',
  16. showCancel: false,
  17. confirmColor: "#c00",
  18. success: function (res) { }
  19. })
  20. }
  21. })
  22. },

这样做的话,每次用户进来都会查看他是否已经授权,如果不授权的话,都会调起授权提示。

如果是用户点击拒绝授权之后,以后每次进来都再也不调起授权提示的话,这个方法就不适合了。

需要用到的方法:

wx:getSetting(获取用户的当前设置。)

wx.authorize(提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。)

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

相关案例查看更多