授權喚起方式
喚起方式 | 組合授權 | 備忘 |
wv.authorize | 全域支援 |
|
wv.getAuthCode | 全域支援 |
|
wv.authorize 使用者裝置資訊授權流程
前提條件
APP開發人員初始化sdk時在EMASMiniAppInitConfig;MiniAppInitConfig類中設定needAuthFromApp為true。
接入準備
小程式調用裝置資訊相關的 API(如WVLocation.getLocation、WVVideo.chooseVideo)時,APP需要彈出授權提示框,由使用者決定是否授權給當前小程式。小程式開發人員可通過 wv.getSetting 擷取當前小程式的授權狀況。
使用需要授權的 API 時,需要使用者在兩個層次上完成授權:1,在APP內授權給小程式;2,在系統層級開啟對應功能並授權給APP。
兩層授權狀態相互獨立。如果小程式已經獲得了使用某項裝置資訊的使用者授權,但App還沒有獲得對應的系統許可權,小程式調用 API 時,容器會自動觸發系統彈窗與使用者確認是否授權給App,小程式也可以通過 WVUIDialog.showAuthGuide API 來引導使用者去系統設定頁面給 App 開啟系統許可權。
小程式授權相關的邏輯
在使用者未對小程式授權的情況下,小程式調用需要許可權的 API,需要先調用wv.authorize, App會向使用者彈出授權提示框:
如果使用者同意,小程式便可以繼續調用裝置資訊擷取的 API 執行,且後續該 API 呼叫時不會再彈出授權提示框;
如果使用者拒絕,將直接觸發 fail 回調,提示使用者取消授權;後續再調用 API 時,還會向使用者彈出授權提示框;
建議小程式開發人員在調用需要使用者授權的 API 前,先調用 wv.getSetting 方法查詢小程式的使用者授權狀態,如果未獲得使用者授權則調用 wv.authorize方法,最後再調用需要授權的API。
系統級許可權相關的邏輯
如果某個 API 所需的特定許可權,使用者並未在系統中開啟或者未授權給App,那麼即使使用者同意將該許可權授權給當前小程式,API 的調用仍會失敗。一般來說,小程式對該 API 的首次調用也會觸發APP向系統申請許可權,使用者會看到相應的授權提示或者引導介面;使用者拒絕並勾選'不再詢問',則可能直接觸發 fail 回調, 小程式開發人員可以通過調用 WVUIDialog.showAuthGuide拉起系統使用權限設定頁面,引導使用者手動開啟許可權。
wv.getAuthCode 使用者個人資訊授權流程
wv.getAuthCode 引導使用者授權其個人資訊給當前小程式(如使用者姓名、連絡方式),會彈出授權引導浮窗。建議在使用者充分瞭解小程式的業務內容後,小程式再調用wv.getAuthCode,避免在小程式首屏調用 wv.getAuthCode,損害使用者體驗。
通過 wv.getAuthCode 所取得的代表使用者授權的授權碼(authCode),後續需由小程式服務端使用,向平台換取實際使用者個人資訊(如user_id、頭像、暱稱、手機號、地區、性別、出生日期等)。
阿里雲 SuperApp 應用開放平台提供了 wv.getAuthCode 的 API 標準定義,但由於平台自身不掌握客戶 SuperApp 的使用者資訊,所以該 API 的實現需要由 SuperApp 的開發人員完成,實現方案可以參考:SuperApp技術標準實現最佳實務。
scope管控
一個scope表示開發人員需要請求使用者授權的許可權範圍。
許可權管控scope錄入。
敏感資訊相關的scope需要使用者主動發起授權,而非後台觸發授權彈窗。
scopes | 對應介面 | 含義 | 喚起方式 |
USER_ID | - | 授權擷取App使用者的唯一標識(user_id)。此方式為靜默授權,不會彈出授權浮窗。 | 授權API:wv.getAuthCode |
USER_NICKNAME | - | 授權擷取App使用者的暱稱。 | |
USER_NAME | - | 授權擷取App使用者的名稱。 | |
USER_LOGIN_ID | - | 授權擷取App使用者的登入ID。 | |
HASH_LOGIN_ID | - | 授權擷取App使用者登入ID的hash值。 | |
USER_AVATAR | - | 授權擷取App使用者的頭像。 | |
USER_GENDER | - | 授權擷取App使用者的性別。 | |
USER_BIRTHDAY | - | 授權擷取App使用者的生日。 | |
USER_NATIONALITY | - | 授權擷取App使用者的國籍。 | |
USER_CONTACTINFO | - | 授權擷取App使用者的連絡方式。 | |
auth_base | - | 授權擷取App使用者的唯一標識(user_id)。此方式為靜默授權,不會彈出授權浮窗。 | |
auth_user | - | 授權擷取App賬戶資訊。 | |
location | 地理位置授權 | 授權API:wv.authorize | |
camera | 相機授權 | ||
bluetooth | WVBluetooth涉及所有方法 | 藍芽授權 | |
album | 相簿授權 | ||
contacts | WVContacts涉及所有方法 | 通訊錄授權 | |
microphone | 麥克風授權 | ||
file | 檔案授權 | ||
call | 電話授權 | ||
vibrate | 震動授權 | ||
screen | 截屏授權 |