您好,登錄后才能下訂單哦!
這篇文章主要講解了“微信小程序的權限接口有哪些及怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“微信小程序的權限接口有哪些及怎么用”吧!
??部分接口需要經過用戶授權統一才能調用。我們把這些接口按使用范圍分成多個scope,用戶選擇對scope進行授權,當授權給一個scope之后,其對應的所有接口都可以直接使用,此類接口調用時:
如果用戶未接受或拒絕此權限,會彈窗詢問用戶,用戶單擊統一后方可調用接口。
如果用戶已授權,可以直接調用接口。
如果用戶已拒絕授權,則不會出現彈窗,而會直接進入接口fail回調。
??此類接口再權限中的對象scope的字段和接口的對應關系如下表所示。
scope | 對應接口 | 描述 |
---|---|---|
scope.userLocation | wx.getLocation, wx.chooseLocation, wx.startLocationUpdate | 地理位置 |
scope.userLocationBackground | wx.startLocationUpdateBackground | 后臺定位 |
scope.record | wx.startRecord, wx.joinVoIPChat, RecorderManager.start | 麥克風 |
scope.camera | camera組件, wx.createVKSession | 攝像頭 |
scope.bluetooth | wx.openBluetoothAdapter, wx.createBLEPeripheralServer | 藍牙 |
scope.writePhotosAlbum | wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum | 添加到相冊 |
scope.addPhoneContact | wx.wx.addPhoneContact | 添加到聯系人 |
scope.addPhoneCalendar | wx.addPhoneRepeatCalendar, wx.addPhoneCalendar | 添加到日歷 |
scope.werun | wx.getWeRunData | 微信運動步數 |
scope.address | wx.chooseAddress | 通訊地址(已取消授權,可以直接調用對應接口) |
scope.invoiceTitle | wx.chooseInvoiceTitle | 發票抬頭(已取消授權,可以直接調用對應接口) |
scope.invoice | wx.chooseInvoice | 獲取發票(已取消授權,可以直接調用對應接口) |
scope.userInfo | wx.getUserInfo | 用戶信息(小程序已回收,請使用頭像昵稱填寫,小游戲可繼續調用) |
??小程序提供了三組接口對接口權限進行相應的操作:wx.getSetting()
獲取用戶當前的授權狀態;wx.openSetting()
打開設置界面以引導用戶開啟授權;wx.authorize()
改變授權狀態。
wx.authorize(Object object)
??提前向用戶發起授權請求。該接口調用后會立刻彈窗詢問用戶是否同意授權小程序使用某項功能或獲取用戶的某些數據,但不會實際調用對應接口。如果用戶之前已經同意授權,則不會出現彈窗,直接返回成功。屬性如下表所示。
屬性 | 類型 | 默認值 | 必填 | 說明 |
---|---|---|---|---|
scope | string | 是 | 需要獲取權限的 scope,詳見 scope 列表 | |
success | function | 否 | 接口調用成功的回調函數 | |
fail | function | 否 | 接口調用失敗的回調函數 | |
complete | function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
??官網的示例代碼:
// 可以通過 wx.getSetting 先查詢一下用戶是否授權了 "scope.record" 這個 scopewx.getSetting({ success(res) { if (!res.authSetting['scope.record']) { wx.authorize({ scope: 'scope.record', success () { // 用戶已經同意小程序使用錄音功能,后續調用 wx.startRecord 接口不會彈窗詢問 wx.startRecord() } }) } }})
wx.getSetting(Object object)
??該接口獲取用戶的當前設置。返回值中只會出現小程序已經向用戶請求過的權限。屬性如下:
屬性 | 類型 | 默認值 | 必填 | 說明 | 最低版本 |
---|---|---|---|---|---|
withSubscriptions | Boolean | false | 否 | 是否同時獲取用戶訂閱消息的訂閱狀態,默認不獲取。注意:withSubscriptions 只返回用戶勾選過訂閱面板中的“總是保持以上選擇,不再詢問”的訂閱消息。 | 2.10.1 |
success | function | 否 | 接口調用成功的回調函數 | ||
fail | function | 否 | 接口調用失敗的回調函數 | ||
complete | function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
object.success回調函數如下:
屬性 | 類型 | 說明 | 最低版本 |
---|---|---|---|
authSetting | AuthSetting | 用戶授權結果 | |
subscriptionsSetting | SubscriptionsSetting | 用戶訂閱消息設置,接口參數withSubscriptions 值為true 時才會返回。 | 2.10.1 |
miniprogramAuthSetting | AuthSetting | 在插件中調用時,當前宿主小程序的用戶授權結果 |
??官網示例代碼:
wx.getSetting({ success (res) { console.log(res.authSetting) // res.authSetting = { // "scope.userInfo": true, // "scope.userLocation": true // } }})
wx.openSetting(Object object)
??該接口調用客戶端小程序設置界面,返回用戶設置的操作結果。設置界面只會出現小程序已經向用戶請求過的權限。
屬性 | 類型 | 默認值 | 必填 | 說明 | 最低版本 |
---|---|---|---|---|---|
withSubscriptions | Boolean | false | 否 | 是否同時獲取用戶訂閱消息的訂閱狀態,默認不獲取。注意:withSubscriptions 只返回用戶勾選過訂閱面板中的“總是保持以上選擇,不再詢問”的訂閱消息。 | 2.10.3 |
success | function | 否 | 接口調用成功的回調函數 | ||
fail | function | 否 | 接口調用失敗的回調函數 | ||
complete | function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
object.success回調函數如下:
屬性 | 類型 | 說明 | 最低版本 |
---|---|---|---|
authSetting | AuthSetting | 用戶授權結果 | |
subscriptionsSetting | SubscriptionsSetting | 用戶訂閱消息設置,接口參數withSubscriptions 值為true 時才會返回。 | 2.10.3 |
注意:2.3.0 版本開始,用戶發生點擊行為后,才可以跳轉打開設置頁,管理授權信息。
??官網示例代碼:
wx.openSetting({ success (res) { console.log(res.authSetting) // res.authSetting = { // "scope.userInfo": true, // "scope.userLocation": true // } }})
??本例使用獲取地理位置接口wx.getLocation()
和開始錄音接口wx.startRecord()
進行相關操作,而這兩個接口都需要設置操作權限。
Setting.wxml代碼如下:
<!--index.wxml--><view class="body" bindtap="location1">獲取地理位置</view><view class="body">{{context}}</view><view class="body" bindtap="location2">開始錄音</view>
Setting.js代碼如下:
//index.js//獲取應用實例const app = getApp()Page({ data: { }, onLoad: function () { context:'' }, location1:function(){ //獲取地理位置 var that=this wx.getSetting({ //獲取用戶權限設置接口 success(res) { console.log(res) if (!res.authSetting['scope.userLocation']) { wx.authorize({ //授權 scope: 'scope.userLocation', //地理位置權限,看線上面的scope對應的參數 success() { wx.getLocation({ //獲取當前的地理位置 success: function(res) { console.log(res) that.setData({ context: "你所在的經度是" + res.latitude+"你所在的緯度是"+res.longitude}) }, }) } }) } } }) }, location2: function () { //錄音 var that = this wx.getSetting({ success(res) { console.log(res.authSetting) if (!res.authSetting['scope.record']) { wx.openSetting({ //打開用戶權限設置界面 success(res) { console.log(res) wx.startRecord({ //開始錄音 success(res) { const tempFilePath = res.tempFilePath console.log("錄音結束") } }) } }) }} }) }})
?? location()1函數實現獲取地理位置的功能,該函數先調用wx.getSetting()接口獲取權限狀態,然后調用wx.authorize()接口修改地理位置權限scope.userLocation。location2()函數實現錄音功能,該函數先調用wx.getSetting()接口獲取權限狀態,然后調用wx.openSetting()接口打開錄音權限設置界面來修改錄音權限。從本例可以看出設置權限的時候應該先調用wx.getSetting()接口來修改權限狀態,在沒有權限打開的情況下可以調用wx.authorize()接口或者wx.openSetting()接口來修改權限狀態,wx.authorize()接口不出現修改權限的操作權限,而wx.openSetting()接口會出現修改權限的操作界面。
感謝各位的閱讀,以上就是“微信小程序的權限接口有哪些及怎么用”的內容了,經過本文的學習后,相信大家對微信小程序的權限接口有哪些及怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。