小程序的受權

官方文檔

<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)
            }
          })
        }
      }
    })
  },
相關文章
相關標籤/搜索