微信小程序用戶后臺定位及錄音授權及請求示例
官方文檔
<https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html>
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中發(fā)現(xiàn)scope值是false,標識沒有授權,我們可以通過wx.authorize發(fā)起授權,對那個接口授權,就給wx.authorize傳對應scope值就可以了。如果用用戶同意授權,就可以直接使用對應的接口了。
4 但是scope.userInfo沒有辦法使用wx.authorize自動彈起彈框。必須要用戶手動點擊按鈕喚起授權彈框。
代碼格式:
<button open-type="getUserInfo" bindgetuserinfo="user1">用戶信息</button>
我們可以再響應函數(shù)的參數(shù)中獲取用戶信息。e.detail,這個和直接調用wx.getUserInfo獲取的內容一樣。
獲取用戶授權設置
開發(fā)者可以使用 wx.getSetting 獲取用戶當前的授權狀態(tài)。
提前發(fā)起授權請求
開發(fā)者可以使用 wx.authorize 在調用需授權 API 之前,提前向用戶發(fā)起授權請求。
scope 列表
| scope | 對應接口 | 描述 |
|---|---|---|
| scope.userInfo | wx.getUserInfo | 用戶信息 |
| scope.userLocation | wx.getLocation, wx.chooseLocation | 地理位置 |
| scope.userLocationBackground | wx.startLocationUpdateBackground | 后臺定位 |
| scope.address | wx.chooseAddress | 通訊地址 |
| scope.invoiceTitle | wx.chooseInvoiceTitle | 發(fā)票抬頭 |
| scope.invoice | wx.chooseInvoice | 獲取發(fā)票 |
| scope.werun | wx.getWeRunData | 微信運動步數(shù) |
| scope.record | wx.startRecord | 錄音功能 |
| scope.writePhotosAlbum | wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum | 保存到相冊 |
| scope.camera | camera 組件 | 攝像頭 |
授權有效期
一旦用戶明確同意或拒絕過授權,其授權關系會記錄在后臺,直到用戶主動刪除小程序。
注意事項
wx.authorize({scope: "scope.userInfo"}) 用戶信息 的授權必須button用戶手動觸發(fā)彈窗,授權
其他錄音等授權,可以直接寫在生命周期中,自動彈窗,用戶點擊授權
wx.authorize({scope: "scope.userInfo"}),不會彈出授權窗口,請使用 ``open-type="getUserInfo"
<button bindgetuserinfo="user1" open-type="getUserInfo">個人信息1</button>
需要授權 scope.userLocation、scope.userLocationBackground 時必須配置地理位置用途說明。
后臺定位
與其它類型授權不同的是,scope.userLocationBackground 不會彈窗提醒用戶。需要用戶在設置頁中,主動將“位置信息”選項設置為“使用小程序期間和離開小程序后”。開發(fā)者可以通過調用wx.openSetting,打開設置頁。

案例:個人信息getUserInfo
# 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() {
// 用戶已經(jīng)同意小程序使用錄音功能,后續(xù)調用 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('已經(jīng)授權了')
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)
}
})
}
}
})
},
錄音等,可以寫在onLaunch中
App({
onLaunch: function () {
// 獲取用戶信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.record']) {
// 已經(jīng)授權,可以直接調用 record 獲取頭像昵稱,不會彈框
wx.getUserInfo({
success: res => {
// 可以將 res 發(fā)送給后臺解碼出 unionId
this.globalData.userInfo = res.record
// 由于 record 是網(wǎng)絡請求,可能會在 Page.onLoad 之后才返回
// 所以此處加入 callback 以防止這種情況
if (this.userInfoReadyCallback) {
this.userInfoReadyCallback(res)
}
}
})
}
}
})以上就是微信小程序用戶后臺定位及錄音授權及請求示例的詳細內容,更多關于微信小程序用戶后臺定位及錄音授權的資料請關注腳本之家其它相關文章!
相關文章
JavaScript使用setTimeout實現(xiàn)倒計時效果
這篇文章主要為大家詳細介紹了JavaScript使用setTimeout實現(xiàn)倒計時效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-02-02
javascript實現(xiàn)計算指定范圍內的質數(shù)示例
這篇文章主要介紹了javascript實現(xiàn)計算指定范圍內的質數(shù),涉及javascript數(shù)值計算與判斷相關操作技巧,需要的朋友可以參考下2018-12-12
xmlplus組件設計系列之網(wǎng)格(DataGrid)(10)
xmlplus 是一個JavaScript框架,用于快速開發(fā)前后端項目。這篇文章主要介紹了xmlplus組件設計系列之xmlplus網(wǎng)格,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05

