小程序的受权

官方文档

<https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html>python

https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.getSetting.html小程序

小程序受权

1 由于部分功能须要用赞成后才能使用。

2 wx.getSetting来判断该用户有没有对接口受权,我判断哪一个接口,就必须给wx.getSetting传对应的scope值
- 一个scope值对应这个一个或多个接口

3 若是咱们从wx.getSetting中发现scope值是false,标识没有受权,咱们能够经过wx.authorize发起受权,对那个接口受权,就给wx.authorize传对应scope值就能够了。若是用用户赞成受权,就能够直接使用对应的接口了。

4 可是scope.userInfo没有办法使用wx.authorize自动弹起弹框。必需要用户手动点击按钮唤起受权弹框。
代码格式:
    <button open-type="getUserInfo" bindgetuserinfo="user1">用户信息</button>
    咱们能够再响应函数的参数中获取用户信息。e.detail,这个和直接调用wx.getUserInfo获取的内容同样。

获取用户受权设置

开发者可使用 wx.getSetting 获取用户当前的受权状态。api

提早发起受权请求

开发者可使用 wx.authorize 在调用需受权 API 以前,提早向用户发起受权请求。微信

scope 列表

scope 对应接口 描述
scope.userInfo wx.getUserInfo 用户信息
scope.userLocation wx.getLocation, wx.chooseLocation 地理位置
scope.userLocationBackground wx.startLocationUpdateBackground 后台定位
scope.address wx.chooseAddress 通信地址
scope.invoiceTitle wx.chooseInvoiceTitle 发票抬头
scope.invoice wx.chooseInvoice 获取发票
scope.werun wx.getWeRunData 微信运动步数
scope.record wx.startRecord 录音功能
scope.writePhotosAlbum wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum 保存到相册
scope.camera camera 组件 摄像头

受权有效期

一旦用户明确赞成或拒绝过受权,其受权关系会记录在后台,直到用户主动删除小程序。app

注意事项

wx.authorize({scope: "scope.userInfo"})  用户信息  的受权必须button用户手动触发弹窗,受权
其余录音等受权,能够直接写在生命周期中,自动弹窗,用户点击受权
  1. wx.authorize({scope: "scope.userInfo"}),不会弹出受权窗口,请使用 ``ide

    open-type="getUserInfo"函数

    <button bindgetuserinfo="user1" open-type="getUserInfo">我的信息1</button>
  2. 须要受权 scope.userLocationscope.userLocationBackground 时必须配置地理位置用途说明code

后台定位

与其它类型受权不一样的是,scope.userLocationBackground 不会弹窗提醒用户。须要用户在设置页中,主动将“位置信息”选项设置为“使用小程序期间和离开小程序后”。开发者能够经过调用wx.openSetting,打开设置页。component

background-location

案例

# wxml文件:
<button bindtap="lu">录音</button>
<button bindtap="user" open-type="getUserInfo">我的信息</button>
<button bindgetuserinfo="user1" open-type="getUserInfo">我的信息1</button>


# js文件:
lu:function(){
    wx.getSetting({
      success(res){
        if (!res.authSetting['scope.record']) {
          wx.authorize({
            scope: 'scope.record',  // 受权的功能
            success() {
              // 用户已经赞成小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
              wx.startRecord()  // 使用接口
            }, fail() {  // 用户不一样意进入fail回调
              console.log("你没有受权")
            }
          })
        } else {
          wx.startRecord()  //使用接口
        }
      }
    })
  },
  user: function () {
    wx.getSetting({
      success(res) {
        if (!res.authSetting['scope.userInfo']) {
          wx.authorize({
            scope: 'scope.userinfo',  // 受权的功能
            success() {
              console.log('进来了')
              wx.startRecord()  // 使用接口
            }
          })
        } else {
          console.log('已经受权了')
          wx.startRecord()  //使用接口
        }
      }
    })
  },

  user1:function(e){
    console.log('e',e.detail)
    wx.getSetting({
      success(res){
        if (res.authSetting['scope.userInfo']){
          wx.getUserInfo({
            success:(res) => {
              console.log('res',res)
            }
          })
        }
      }
    })
  },
相关文章
相关标签/搜索