当小程序弹出授权禁止后按钮点击重新打开授权界面

2018-09-02  本文已影响0人  LeePillar

以小程序保存图片到本地为例

一、先在js中创建按钮初始状态变量

Page({
    data: {
        saveShareBtn: false,
    }
},

二、在wxml中添加按钮

注意:bindopensetting="authOpen"是当前授权结果的回调函数(在第四中查看代码)

<block wx:if="{{saveShareBtn == true}}">
        <button  disabled="{{shareBtn}}" bindtap="saveShareCode" >保存图片处理函数saveShareCode</button>
</block>
<block wx:else>
        <button disabled="{{shareBtn}}" open-type="openSetting" bindopensetting="authOpen">保存图片打开授权</button>  
</block>

三、判断授权按钮状态

1、写一个判断授权按钮状态的函数
2、当第一次进入会弹出是否允许授权,如果点了允许或禁止会在bindopensetting="authOpen"的回调函数(见第四)中重新设置按钮状态
3、当点了禁止再次点击按钮会弹出微信权限设置界面,在界面中允许或禁止都会在bindopensetting="authOpen"的回调函数(见第四)中重新设置按钮状态

isAuth: function (res) {
   let that = this;
    //判断图片权限
    wx.getSetting({
      success(res) {
        if (res.authSetting['scope.writePhotosAlbum']) {
          that.setData({saveShareBtn: true})
        }else{
          wx.authorize({
            scope: 'scope.writePhotosAlbum',
            success(res) {
              console.log('允许保存图片');
            }
          })
        }
      },
    })
  }

2、在js的onShow中引入上面的isAuth函数,您也可以在其他需要授权的地方引入,非必须在onShow中引入。

onShow:function(){
  let that = this;
  that.isAuth()
}

四、授权回调函数

(当第一次禁止后需要重新打开),可以判断按钮状态,是上面第二步中的按钮选择使用哪个按钮

  //判断授权结果
  authOpen: function (res) {
    let that = this;
    if (res.detail.authSetting['scope.writePhotosAlbum']) {
      that.setData({ saveShareBtn: true })
    } else {
      that.setData({ saveShareBtn: false })
    }
  },
上一篇下一篇

猜你喜欢

热点阅读