這篇文章主要講解了“微信小程序的權(quán)限接口有哪些及怎么用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“微信小程序的權(quán)限接口有哪些及怎么用”吧!
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比大冶網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式大冶網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋大冶地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
??部分接口需要經(jīng)過用戶授權(quán)統(tǒng)一才能調(diào)用。我們把這些接口按使用范圍分成多個scope,用戶選擇對scope進(jìn)行授權(quán),當(dāng)授權(quán)給一個scope之后,其對應(yīng)的所有接口都可以直接使用,此類接口調(diào)用時:
如果用戶未接受或拒絕此權(quán)限,會彈窗詢問用戶,用戶單擊統(tǒng)一后方可調(diào)用接口。
如果用戶已授權(quán),可以直接調(diào)用接口。
如果用戶已拒絕授權(quán),則不會出現(xiàn)彈窗,而會直接進(jìn)入接口fail回調(diào)。
??此類接口再權(quán)限中的對象scope的字段和接口的對應(yīng)關(guān)系如下表所示。
scope | 對應(yīng)接口 | 描述 |
---|---|---|
scope.userLocation | wx.getLocation, wx.chooseLocation, wx.startLocationUpdate | 地理位置 |
scope.userLocationBackground | wx.startLocationUpdateBackground | 后臺定位 |
scope.record | wx.startRecord, wx.joinVoIPChat, RecorderManager.start | 麥克風(fēng) |
scope.camera | camera組件, wx.createVKSession | 攝像頭 |
scope.bluetooth | wx.openBluetoothAdapter, wx.createBLEPeripheralServer | 藍(lán)牙 |
scope.writePhotosAlbum | wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum | 添加到相冊 |
scope.addPhoneContact | wx.wx.addPhoneContact | 添加到聯(lián)系人 |
scope.addPhoneCalendar | wx.addPhoneRepeatCalendar, wx.addPhoneCalendar | 添加到日歷 |
scope.werun | wx.getWeRunData | 微信運動步數(shù) |
scope.address | wx.chooseAddress | 通訊地址(已取消授權(quán),可以直接調(diào)用對應(yīng)接口) |
scope.invoiceTitle | wx.chooseInvoiceTitle | 發(fā)票抬頭(已取消授權(quán),可以直接調(diào)用對應(yīng)接口) |
scope.invoice | wx.chooseInvoice | 獲取發(fā)票(已取消授權(quán),可以直接調(diào)用對應(yīng)接口) |
scope.userInfo | wx.getUserInfo | 用戶信息(小程序已回收,請使用頭像昵稱填寫,小游戲可繼續(xù)調(diào)用) |
??小程序提供了三組接口對接口權(quán)限進(jìn)行相應(yīng)的操作:wx.getSetting()
獲取用戶當(dāng)前的授權(quán)狀態(tài);wx.openSetting()
打開設(shè)置界面以引導(dǎo)用戶開啟授權(quán);wx.authorize()
改變授權(quán)狀態(tài)。
wx.authorize(Object object)
??提前向用戶發(fā)起授權(quán)請求。該接口調(diào)用后會立刻彈窗詢問用戶是否同意授權(quán)小程序使用某項功能或獲取用戶的某些數(shù)據(jù),但不會實際調(diào)用對應(yīng)接口。如果用戶之前已經(jīng)同意授權(quán),則不會出現(xiàn)彈窗,直接返回成功。屬性如下表所示。
屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 |
---|---|---|---|---|
scope | string | 是 | 需要獲取權(quán)限的 scope,詳見 scope 列表 | |
success | function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | |
fail | function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | |
complete | function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行) |
??官網(wǎng)的示例代碼:
// 可以通過 wx.getSetting 先查詢一下用戶是否授權(quán)了 "scope.record" 這個 scopewx.getSetting({ success(res) { if (!res.authSetting['scope.record']) { wx.authorize({ scope: 'scope.record', success () { // 用戶已經(jīng)同意小程序使用錄音功能,后續(xù)調(diào)用 wx.startRecord 接口不會彈窗詢問 wx.startRecord() } }) } }})
wx.getSetting(Object object)
??該接口獲取用戶的當(dāng)前設(shè)置。返回值中只會出現(xiàn)小程序已經(jīng)向用戶請求過的權(quán)限。屬性如下:
屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 | 最低版本 |
---|---|---|---|---|---|
withSubscriptions | Boolean | false | 否 | 是否同時獲取用戶訂閱消息的訂閱狀態(tài),默認(rèn)不獲取。注意:withSubscriptions 只返回用戶勾選過訂閱面板中的“總是保持以上選擇,不再詢問”的訂閱消息。 | 2.10.1 |
success | function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | ||
fail | function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | ||
complete | function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行) |
object.success回調(diào)函數(shù)如下:
屬性 | 類型 | 說明 | 最低版本 |
---|---|---|---|
authSetting | AuthSetting | 用戶授權(quán)結(jié)果 | |
subscriptionsSetting | SubscriptionsSetting | 用戶訂閱消息設(shè)置,接口參數(shù)withSubscriptions 值為true 時才會返回。 | 2.10.1 |
miniprogramAuthSetting | AuthSetting | 在插件中調(diào)用時,當(dāng)前宿主小程序的用戶授權(quán)結(jié)果 |
??官網(wǎng)示例代碼:
wx.getSetting({ success (res) { console.log(res.authSetting) // res.authSetting = { // "scope.userInfo": true, // "scope.userLocation": true // } }})
wx.openSetting(Object object)
??該接口調(diào)用客戶端小程序設(shè)置界面,返回用戶設(shè)置的操作結(jié)果。設(shè)置界面只會出現(xiàn)小程序已經(jīng)向用戶請求過的權(quán)限。
屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 | 最低版本 |
---|---|---|---|---|---|
withSubscriptions | Boolean | false | 否 | 是否同時獲取用戶訂閱消息的訂閱狀態(tài),默認(rèn)不獲取。注意:withSubscriptions 只返回用戶勾選過訂閱面板中的“總是保持以上選擇,不再詢問”的訂閱消息。 | 2.10.3 |
success | function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | ||
fail | function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | ||
complete | function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行) |
object.success回調(diào)函數(shù)如下:
屬性 | 類型 | 說明 | 最低版本 |
---|---|---|---|
authSetting | AuthSetting | 用戶授權(quán)結(jié)果 | |
subscriptionsSetting | SubscriptionsSetting | 用戶訂閱消息設(shè)置,接口參數(shù)withSubscriptions 值為true 時才會返回。 | 2.10.3 |
注意:2.3.0 版本開始,用戶發(fā)生點擊行為后,才可以跳轉(zhuǎn)打開設(shè)置頁,管理授權(quán)信息。
??官網(wǎng)示例代碼:
wx.openSetting({ success (res) { console.log(res.authSetting) // res.authSetting = { // "scope.userInfo": true, // "scope.userLocation": true // } }})
??本例使用獲取地理位置接口wx.getLocation()
和開始錄音接口wx.startRecord()
進(jìn)行相關(guān)操作,而這兩個接口都需要設(shè)置操作權(quán)限。
Setting.wxml代碼如下:
獲取地理位置 {{context}} 開始錄音
Setting.js代碼如下:
//index.js//獲取應(yīng)用實例const app = getApp()Page({ data: { }, onLoad: function () { context:'' }, location1:function(){ //獲取地理位置 var that=this wx.getSetting({ //獲取用戶權(quán)限設(shè)置接口 success(res) { console.log(res) if (!res.authSetting['scope.userLocation']) { wx.authorize({ //授權(quán) scope: 'scope.userLocation', //地理位置權(quán)限,看線上面的scope對應(yīng)的參數(shù) success() { wx.getLocation({ //獲取當(dāng)前的地理位置 success: function(res) { console.log(res) that.setData({ context: "你所在的經(jīng)度是" + res.latitude+"你所在的緯度是"+res.longitude}) }, }) } }) } } }) }, location2: function () { //錄音 var that = this wx.getSetting({ success(res) { console.log(res.authSetting) if (!res.authSetting['scope.record']) { wx.openSetting({ //打開用戶權(quán)限設(shè)置界面 success(res) { console.log(res) wx.startRecord({ //開始錄音 success(res) { const tempFilePath = res.tempFilePath console.log("錄音結(jié)束") } }) } }) }} }) }})
?? location()1函數(shù)實現(xiàn)獲取地理位置的功能,該函數(shù)先調(diào)用wx.getSetting()接口獲取權(quán)限狀態(tài),然后調(diào)用wx.authorize()接口修改地理位置權(quán)限scope.userLocation。location2()函數(shù)實現(xiàn)錄音功能,該函數(shù)先調(diào)用wx.getSetting()接口獲取權(quán)限狀態(tài),然后調(diào)用wx.openSetting()接口打開錄音權(quán)限設(shè)置界面來修改錄音權(quán)限。從本例可以看出設(shè)置權(quán)限的時候應(yīng)該先調(diào)用wx.getSetting()接口來修改權(quán)限狀態(tài),在沒有權(quán)限打開的情況下可以調(diào)用wx.authorize()接口或者wx.openSetting()接口來修改權(quán)限狀態(tài),wx.authorize()接口不出現(xiàn)修改權(quán)限的操作權(quán)限,而wx.openSetting()接口會出現(xiàn)修改權(quán)限的操作界面。
感謝各位的閱讀,以上就是“微信小程序的權(quán)限接口有哪些及怎么用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對微信小程序的權(quán)限接口有哪些及怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!