微信小游戲開發(fā)文檔-小游戲用戶授權(quán)開放能力開發(fā)教程

2018-05-11 10:43 更新

用戶授權(quán)


部分接口需要經(jīng)過用戶授權(quán)同意才能調(diào)用。我們把這些接口按使用范圍分成多個 scope ,用戶選擇對 scope 來進行授權(quán),當(dāng)授權(quán)給一個 scope 之后,其對應(yīng)的所有接口都可以直接使用。

調(diào)用接口發(fā)起授權(quán)

第一次使用某個 scope 下的接口時,會彈窗詢問用戶,“XXX申請獲得以下權(quán)限:(權(quán)限描述)”。如果用戶點擊允許,則可獲得此 scope 的接口權(quán)限。并且接口調(diào)用成功,否則接口調(diào)用失敗。

wx.login({
  success: function () {
    wx.getUserInfo()
  }
})

微信小游戲開發(fā)調(diào)用接口發(fā)起授權(quán)

提前發(fā)起授權(quán)

如果需要提前發(fā)起授權(quán)獲得用戶同意,則可調(diào)用 wx.authorize() 來提前發(fā)起授權(quán)。

wx.authorize({
  scope: 'scope.record'
})

微信小游戲開發(fā)提前發(fā)起授權(quán)

處理用戶拒絕授權(quán)

用戶有可能拒絕小程序發(fā)起的授權(quán)申請,需要處理這種情況。

wx.login({
  success: function () {
    wx.getUserInfo({
      fail: function (res) {
        // iOS 和 Android 對于拒絕授權(quán)的回調(diào) errMsg 沒有統(tǒng)一,需要做一下兼容處理
        if (res.errMsg.indexOf('auth deny') > -1 ||     res.errMsg.indexOf('auth denied') > -1 ) {
          // 處理用戶拒絕授權(quán)的情況
        }
      }
    })
  }
})

wx.authorize({
  scope: 'scope.record',
  fail: function (res) {
    // iOS 和 Android 對于拒絕授權(quán)的回調(diào) errMsg 沒有統(tǒng)一,需要做一下兼容處理
    if (res.errMsg.indexOf('auth deny') > -1 ||     res.errMsg.indexOf('auth denied') > -1 ) {
      // 處理用戶拒絕授權(quán)的情況
    }    
  }
})

獲取用戶授權(quán)設(shè)置

通過調(diào)用 wx.getSetting() 接口可以獲取用戶當(dāng)前的授權(quán)處理信息。

wx.getSetting({
  success: function (res) {
    var authSetting = res.authSetting
    if (authSetting['scope.userInfo'] === true) {
      // 用戶已授權(quán),可以直接調(diào)用相關(guān) API
    } else if (authSetting['scope.userInfo'] === false){
      // 用戶已拒絕授權(quán),再調(diào)用相關(guān) API 或者 wx.authorize 會失敗,需要引導(dǎo)用戶到設(shè)置頁面打開授權(quán)開關(guān)
    } else {
      // 未詢問過用戶授權(quán),調(diào)用相關(guān) API 或者 wx.authorize 會彈窗詢問用戶
    }
  }
})

引導(dǎo)用戶重新授權(quán)

如果用戶拒絕過某個 scope 的授權(quán)申請,則后續(xù)這個 scope 下的相關(guān) API 調(diào)用都會直接失敗,用 wx.authorize() 申請此 scope 也會直接失敗,而不會彈窗詢問用戶。這種情況下,需要引導(dǎo)用戶主動到設(shè)置頁面打開相應(yīng)的 scope 權(quán)限。

授權(quán)頁面的進入路徑為:右上角菜單->關(guān)于(小程序名字)->右上角菜單->設(shè)置

注意:只有申請過授權(quán)的 scope 會出現(xiàn)在設(shè)置頁面。

微信小游戲開發(fā)引導(dǎo)用戶重新授權(quán)

重置授權(quán)記錄

如果用戶在小程序列表中刪除了當(dāng)前小程序,則所有允許過和拒絕過的授權(quán)記錄都會被清空。

Scope 列表

scope 對應(yīng) API 描述
scope.userInfo wx.getUserInfo() 用戶信息
scope.userLocation wx.getLocation() 地理位置
scope.werun wx.getWeRunData() 微信運動步數(shù)
scope.record wx.startRecord()RecorderManager.start() 錄音功能
scope.writePhotosAlbum wx.saveImageToPhotosAlbum() 保存到相冊


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號