用户授权拒绝处理方案金沙8331网址

正文实例陈诉了Wechat小程序学习笔记之取得地点新闻操作。分享给我们供我们参照他事他说加以考察,具体如下:

在自己的首先篇小说强塞过渡页面金沙8331网址,中,有介绍我们项目应用静默登陆,在一些供给获得客户头像别名等音信的页面,才去举行授权操作。根据须求我们以顾客外号是不是为空作为是或不是授权决断典型,为空则供给顾客进行授权获取顾客音讯,授权成功再调用服务器接口更新本地存款和储蓄的连带顾客音讯,再做连锁的政工逻辑管理的。

眼下介绍了微信小程序文件上传、下载操作。这里深入分析一下得到地点音讯操作。

贯彻顾客授权获取消息其实也很简单,查阅Wechat小程序API,能够开采调用
wx.getUserInfo()
就可以达成,只要暗中认可参数该接口能够完全部独用立于wx.login()
使用,因为无需看清登入态是或不是过期难点,鉴于方便处理,大家项目登入时不做session核查,也正是说不必要构思登陆态状态。

wx.getLocation()

之所以一开头小编使用了最简易的不二法门,在wxml使用button完毕,设置button的
open-type=”getUserInfo”质量,只要求在wxml中绑定事件管理点击之后的业务逻辑,那样有个低价正是,只要没授权每一遍都会弹出授权,能够不用去管理授权弹窗只弹一回客商谢绝授权后怎么张开的标题。没授权时点击开关效果如图1:

getlocation.wxml:

金沙8331网址 1

 获取位置

图1

getlocation.js:

唯独,在其余页面也急需基于客商是或不是授权处总管务逻辑,并且这些剖断逻辑是在点击切换tab走入页面就需求管理,无法绑定在切实的某些button上贯彻。为保障代码尽也许重用和授权弹窗管理随处保持一致,决定封装一个艺术放在common.js文件中。别的地点接纳时,只需调用
common.getCurUserInfo(success, fail)
,该措施只需传2个callback去管理授权成功和曲折后逻辑,能更加好的将重心转移到事情范围,幸免支付进度中再三判断是还是不是授权和爱护授权管理等连锁的一多元难点,如:第三次授权弹窗采纳拒却后,如何保管客户早先时期设置开启授权以至怎么着团结优化提示。而且大家项目是鞭挞客商去授权的,因为不授权超级多事务会不能够张开。

Page({ getlocation: function () { wx.getLocation({ type: 'wgs84', //wgs84返回gps坐标,gcj02返回国测局坐标 success: function { console.log

有个别页面使用view可能button达成绑定事件管理授权能够参见笔者的wxml代码:

点击获取地方按键,第一遍调用须求获得用户的scope.userLocation授权:

<view class='red-package-phone'>

    <!-- 采用组件button实现 -->
    <view wx:if="{{!resumeInfo.phone}}" class='red-package'>
      <button wx:if="{{!resumeInfo.isShowPhone}}" class='red-package' open-type="getUserInfo" bindtap="sendRedPacket">  
      <image src='/image/redpack.png'></image>
      发红包查看手机号
      </button> 
    </view>

    <!-- 采用组件view实现 -->
    <!-- <view wx:if="{{!resumeInfo.phone}}" class='red-package' bindtap="sendRedPacket">
      <image src='/image/redpack.png'></image>
      发红包查看手机号
    </view> -->

    <view wx:else class='phone' bindtap="callPhone">
      <image src='/image/phone.png' mode="aspectFill"></image>
      {{resumeInfo.phone}}
    </view>

  </view>

点击明确,得到地点消息:

至于授权获取客户音讯的js代码如下:

wx.openLocation()

/**
 * 授权获取用户信息
 * 处理逻辑:根据userInfo.name是否为空判断是否授权
 * userInfo.name ="" => 进行授权获取用户信息 
 * userInfo.name !="" => 即已授权,调用success回调
 * @param success 授权获取用户信息成功的业务逻辑处理
 * @param fail 授权获取用户信息失败的业务逻辑处理
 */
var getCurUserInfo = function (success, fail) {
  /**
   * 方法1: 使用组件button实现:设置button open-type="getUserInfo",未允许则每次都会弹出授权弹框
   */
  /*
  if (!getApp().globalData.userInfo.name) {
    wx.getSetting({
      success(res) {
        wx.getUserInfo({
          success: function (res) {
            //获取用户信息成功后,调用服务器接口更新用户相关信息
            updateUserInfo(res.userInfo, success)
          },
          fail: function (res) {
            console.log('用户选择拒绝授权获取用户信息')
            fail(res)
          }
        })
      },
      fail(res) {
        fail(res)
      }
    })
  }else {
    success(getApp().globalData.userInfo)
  }
  */

  /**
   * 方法2: 使用组件view实现:首次弹出授权弹框,选择允许后不再弹,选择拒绝后下次弹出提示进设置页面开启授权
   */
  if (!getApp().globalData.userInfo.name) {
    wx.getSetting({
      success(res) {
        console.log(res.authSetting);
        var authSetting = res.authSetting;
        if (isEmptyObject(authSetting['scope.userInfo'])) {
          //首次授权,弹授权提示框,注意只会弹一次
          wx.authorize({
            scope: 'scope.userInfo',
            success() {
              wx.getUserInfo({
                success: function (res) {
                  //获取用户信息成功后,调用服务器接口更新用户相关信息
                  updateUserInfo(res.userInfo, success)
                },
                fail: function (res) {
                  console.log('用户选择拒绝授权获取用户信息')
                  fail(res)
                }
              })
            },
            fail() {
              console.log('调用authorize方法失败')
              fail(res)
              wx.showModal({
                title: '用户未授权',
                content: '如需正常使用微信红包支付,请按确定并在授权管理中选中“用户信息”,然后点按确定。最后再重新进入小程序即可正常使用。',
                showCancel: false,
                success: function (res) {
                  if (res.confirm) {
                    wx.openSetting({
                      success: function success(res) {
                        console.log('调用openSetting方法success:', res);
                      },
                      fail: function (res) {
                        console.log('调用openSetting方法fail:', res);
                      }, complete: function (res) {
                        console.log('调用openSetting方法complete:', res);
                      }
                    });
                  }
                }
              })
            }
          })
        } else {
          //首次授权选择拒绝后,为保证未授权时下次能弹出提示弹窗的处理
          if (!authSetting['scope.userInfo']) {
            wx.showModal({
              title: '用户未授权',
              content: '如需正常使用微信红包支付,请按确定并在授权管理中选中“用户信息”,然后点按确定。最后再重新进入小程序即可正常使用。',
              showCancel: false,
              success: function (res) {
                if (res.confirm) {
                  wx.openSetting({
                    success: function success(res) {
                      console.log('调用openSetting方法success:', res);
                    },
                    fail: function (res) {
                      console.log('调用openSetting方法fail:', res);
                    }, complete: function (res) {
                      console.log('调用openSetting方法complete:', res);
                    }
                  });
                }
              }
            })
          } else {
            wx.getUserInfo({
              success: res => {
                updateUserInfo(res.userInfo, success)
              },
              fail(res) {
                console.log('调用openSetting方法失败:', res)
                fail(res)
              }
            })
          }
        }
      },
      fail(res) {
        console.log('调用getSetting方法失败:', res)
        fail(res)
      }
    })
  } else {
    success(getApp().globalData.userInfo)
  }
}

openlocation.wxml:

运用方法2,
第一遍选取了闭门羹后会弹提醒弹窗,点击分明会跳转到设置页面,能够拉开授权。
不容授权后点发红包开关效果如图2:

 地图位置

金沙8331网址 2

openlocation.js:

图2

Page({ openlocation: function () { //首先调用wx.getLocation获得当前位置经纬度 wx.getLocation({ type: 'gcj02', //wx.openLocation可用坐标系 success { const latitude = res.latitude const longitude = res.longitude wx.openLocation({ latitude, //纬度 longitude, //经度 scale: 18, //缩放比例:5~18 name: '北京', //位置名 address: '挺好', //地址详细说明 success: function  { console.log

点指示客户未授权弹窗分明开关效果如图3:

点击地图地方开关,第壹回调用也急需获得客户的scope.userLocation授权:

金沙8331网址 3

开菜地图获得地方如下:

图3

wx.chooseLocation()

金沙8331网址 4

chooselocation.wxml:

图4

 选择位置
从那之后授权获取顾客消息在本项目中都相会成图1-3的机能了。总括下:

1、轻易高效实现形式:推荐用button设置 open-type=”getUserInfo”
属性,即方法1,只需绑定事件处理业务逻辑,这种办法能确认保障每一遍都弹授权弹窗;
2、较为复杂完毕格局:不注重button组件,任何因素大概非成分绑准时,思虑方法2,这种艺术授权弹窗只会在第二次面世,推却能够自定义提醒弹窗指导顾客在安装页面进行授权。

chooselocation.js:

Page({ chooselocation: function () { wx.chooseLocation({ success: function  { console.log

点击采取地点开关,第三回调用还亟需获得客户的scope.userLocation授权:

选用贰个岗位,点击右上角规定,再次来到新闻如下:

希望本文所述对大家Wechat小程序支付具有利于。

发表评论

电子邮件地址不会被公开。 必填项已用*标注