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

2018-05-11 10:43 更新

用戶授權(quán)


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

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

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

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

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

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

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

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

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

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

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

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

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

通過(guò)調(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 會(huì)失敗,需要引導(dǎo)用戶到設(shè)置頁(yè)面打開(kāi)授權(quán)開(kāi)關(guān)
    } else {
      // 未詢問(wèn)過(guò)用戶授權(quán),調(diào)用相關(guān) API 或者 wx.authorize 會(huì)彈窗詢問(wèn)用戶
    }
  }
})

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

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

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

注意:只有申請(qǐng)過(guò)授權(quán)的 scope 會(huì)出現(xiàn)在設(shè)置頁(yè)面。

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

重置授權(quán)記錄

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

Scope 列表

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


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)