<https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html>python
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中發現scope值是false,標識沒有受權,咱們能夠經過wx.authorize發起受權,對那個接口受權,就給wx.authorize傳對應scope值就能夠了。若是用用戶贊成受權,就能夠直接使用對應的接口了。 4 可是scope.userInfo沒有辦法使用wx.authorize自動彈起彈框。必需要用戶手動點擊按鈕喚起受權彈框。 代碼格式: <button open-type="getUserInfo" bindgetuserinfo="user1">用戶信息</button> 咱們能夠再響應函數的參數中獲取用戶信息。e.detail,這個和直接調用wx.getUserInfo獲取的內容同樣。
開發者可使用 wx.getSetting 獲取用戶當前的受權狀態。api
開發者可使用 wx.authorize 在調用需受權 API 以前,提早向用戶發起受權請求。微信
scope | 對應接口 | 描述 |
---|---|---|
scope.userInfo | wx.getUserInfo | 用戶信息 |
scope.userLocation | wx.getLocation, wx.chooseLocation | 地理位置 |
scope.userLocationBackground | wx.startLocationUpdateBackground | 後臺定位 |
scope.address | wx.chooseAddress | 通信地址 |
scope.invoiceTitle | wx.chooseInvoiceTitle | 發票擡頭 |
scope.invoice | wx.chooseInvoice | 獲取發票 |
scope.werun | wx.getWeRunData | 微信運動步數 |
scope.record | wx.startRecord | 錄音功能 |
scope.writePhotosAlbum | wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum | 保存到相冊 |
scope.camera | camera 組件 | 攝像頭 |
一旦用戶明確贊成或拒絕過受權,其受權關係會記錄在後臺,直到用戶主動刪除小程序。app
wx.authorize({scope: "scope.userInfo"}) 用戶信息 的受權必須button用戶手動觸發彈窗,受權 其餘錄音等受權,能夠直接寫在生命週期中,自動彈窗,用戶點擊受權
wx.authorize({scope: "scope.userInfo"})
,不會彈出受權窗口,請使用 ``ide
open-type="getUserInfo"函數
<button bindgetuserinfo="user1" open-type="getUserInfo">我的信息1</button>
須要受權 scope.userLocation
、scope.userLocationBackground
時必須配置地理位置用途說明。code
與其它類型受權不一樣的是,scope.userLocationBackground 不會彈窗提醒用戶。須要用戶在設置頁中,主動將「位置信息」選項設置爲「使用小程序期間和離開小程序後」。開發者能夠經過調用wx.openSetting,打開設置頁。component
# 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() { // 用戶已經贊成小程序使用錄音功能,後續調用 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('已經受權了') 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) } }) } } }) },