Metode otorisasi
Metode | Ketersediaan | Deskripsi |
wv.authorize | Didukung secara global |
|
wv.getAuthCode | Didukung secara global |
|
wv.authorize: Informasi perangkat pengguna
Prasyarat
Saat menginisialisasi SDK, developer aplikasi harus mengatur needAuthFromApp ke true dalam kelas EMASMiniAppInitConfig atau MiniAppInitConfig.
Sebelum memulai
Saat miniapp memanggil API yang memerlukan informasi perangkat, seperti
WVLocation.getLocationatauWVVideo.chooseVideo, aplikasi host harus menampilkan prompt otorisasi agar pengguna memberikan izin. Developer miniapp dapat memanggil wv.getSetting untuk memeriksa status otorisasi miniapp saat ini.Untuk menggunakan API yang memerlukan otorisasi, pengguna harus memberikan izin pada dua tingkat: kepada miniapp di dalam aplikasi host dan kepada aplikasi host di tingkat sistem operasi.
Kedua tingkat otorisasi ini bersifat independen. Jika pengguna telah memberikan izin kepada program mini tetapi aplikasi Host belum memperoleh izin sistem yang sesuai, Kontainer akan secara otomatis memicu prompt sistem saat API dipanggil. Program mini juga dapat memanggil API WVUIDialog.showAuthGuide untuk memandu pengguna ke halaman pengaturan sistem guna memberikan izin kepada aplikasi Host.
Logika otorisasi miniapp
Jika pengguna belum memberikan otorisasi kepada miniapp, Anda harus terlebih dahulu memanggil wv.authorize sebelum memanggil API yang memerlukan izin. Aplikasi host kemudian akan menampilkan prompt otorisasi kepada pengguna:
Jika pengguna menyetujui, miniapp dapat memanggil API informasi perangkat tersebut. Pemanggilan berikutnya tidak akan memicu prompt otorisasi lagi.
Jika pengguna menolak, callback
failsegera dipicu, menandakan bahwa otorisasi ditolak. Pemanggilan API berikutnya akan kembali menampilkan prompt otorisasi.
Developer miniapp sebaiknya terlebih dahulu memanggil wv.getSetting untuk memeriksa status otorisasi pengguna sebelum memanggil API yang memerlukannya. Jika izin belum diberikan, panggil wv.authorize untuk memintanya, lalu panggil API target.
Logika izin tingkat sistem
Jika izin yang diperlukan dinonaktifkan di sistem operasi atau belum diberikan kepada aplikasi host, pemanggilan API akan gagal meskipun pengguna telah memberikan izin kepada miniapp. Biasanya, saat pertama kali miniapp memanggil API tersebut, aplikasi host juga meminta izin dari sistem dan menampilkan prompt. Jika pengguna menolak permintaan tersebut dan memilih 'Don’t ask again', pemanggilan berikutnya mungkin langsung memicu callback fail. Dalam kasus ini, developer miniapp dapat memanggil WVUIDialog.showAuthGuide untuk membuka halaman pengaturan izin sistem dan mengarahkan pengguna agar mengaktifkan izin tersebut secara manual.
wv.getAuthCode: Informasi pribadi pengguna
API wv.getAuthCode meminta pengguna untuk memberikan akses miniapp saat ini ke informasi pribadi mereka, seperti nama dan informasi kontak, dengan menampilkan prompt otorisasi mengambang. Kami menyarankan Anda hanya memanggil wv.getAuthCode setelah pengguna benar-benar memahami layanan miniapp Anda. Hindari memanggil wv.getAuthCode di layar utama miniapp karena hal ini dapat menurunkan pengalaman pengguna.
Server backend miniapp harus menggunakan kode otorisasi (authCode) yang dikembalikan oleh wv.getAuthCode. Server tersebut kemudian dapat menukar kode ini dengan platform untuk memperoleh informasi pribadi pengguna, seperti ID pengguna, avatar, nama panggilan, nomor telepon, wilayah, jenis kelamin, dan tanggal lahir.
Alibaba Cloud SuperApp Application Open Platform menyediakan definisi API standar untuk wv.getAuthCode. Namun, karena platform tidak memiliki akses ke informasi pengguna dari client SuperApps, developer SuperApp bertanggung jawab untuk mengimplementasikan API ini. Untuk referensi implementasi, lihat Best practices for implementing SuperApp technical standards.
Kontrol cakupan (scope)
Cakupan (scope) mendefinisikan rentang izin yang diminta developer dari pengguna.
Deklarasikan cakupan yang diperlukan untuk kontrol izin.
Untuk cakupan yang terkait informasi sensitif, permintaan otorisasi harus dipicu oleh tindakan pengguna; tidak boleh dipicu secara otomatis di latar belakang.
Cakupan (Scope) | API Terkait | Deskripsi | API Otorisasi |
USER_ID | - | Memberikan izin untuk memperoleh identifier unik pengguna (user_id). Ini adalah otorisasi diam (silent authorization), yang tidak menampilkan dialog. | API Otorisasi: wv.getAuthCode |
USER_NICKNAME | - | Memberikan izin untuk memperoleh nama panggilan pengguna aplikasi. | |
USER_NAME | - | Memberikan izin untuk memperoleh nama pengguna aplikasi. | |
USER_LOGIN_ID | - | Memberikan izin untuk memperoleh ID login pengguna aplikasi. | |
HASH_LOGIN_ID | - | Memberikan izin untuk memperoleh hash dari ID login pengguna aplikasi. | |
USER_AVATAR | - | Memberikan izin untuk memperoleh avatar pengguna aplikasi. | |
USER_GENDER | - | Memberikan izin untuk memperoleh jenis kelamin pengguna aplikasi. | |
USER_BIRTHDAY | - | Memberikan izin untuk memperoleh tanggal lahir pengguna aplikasi. | |
USER_NATIONALITY | - | Memberikan izin untuk memperoleh kewarganegaraan pengguna aplikasi. | |
USER_CONTACTINFO | - | Memberikan izin untuk memperoleh informasi kontak pengguna aplikasi. | |
auth_base | - | Memberikan izin untuk memperoleh identifier unik pengguna (user_id). Ini adalah otorisasi diam (silent authorization), yang tidak menampilkan dialog. | |
auth_user | - | Memberikan izin untuk memperoleh informasi akun aplikasi. | |
location | Otorisasi geolokasi | API Otorisasi: wv.authorize | |
camera | Otorisasi kamera | ||
Bluetooth | Semua metode WVBluetooth | Otorisasi Bluetooth | |
album | Otorisasi album | ||
contacts | Semua metode WVContacts | Otorisasi kontak | |
microphone | Otorisasi mikrofon | ||
file | Otorisasi file | ||
call | WVCall.dial atau WVCall.call | Otorisasi panggilan | |
vibration | Otorisasi getaran | ||
screen capture | Otorisasi tangkapan layar |