Cakupan penerapan
Dokumen ini berlaku untuk jenis aplikasi berikut:- Aplikasi mikro H5
- Aplikasi mini program (termasuk mini program organisasi)
Ikhtisar alur Login senyap
Verifikasi identitas melalui Login senyap memungkinkan pengguna masuk ke aplikasi tanpa memasukkan nama pengguna atau kata sandi DingTalk. Aplikasi secara otomatis memperoleh identitas pengguna saat ini dan menyelesaikan proses masuk. Alur ini dibangun di atas mekanisme authorization code sementara. Sisi front end memanggil JSAPI untuk memperoleh authorization code sementara sekali pakaitmp_auth_code, dan server menggunakan kode ini untuk memanggil API DingTalk Open Platform guna menukarnya dengan informasi identitas seperti userId pengguna.
Istilah penting: tmp_auth_code adalah authorization code sementara sekali pakai yang diperoleh melalui JSAPI front end (seperti dd.getAuthCode atau dd.runtime.permission.requestAuthCode). Kode ini berlaku selama 5 menit dan hanya dapat digunakan sekali. Server harus meneruskannya ke API DingTalk (seperti /user/get) untuk menukarnya dengan identitas pengguna.
Contoh yang dapat dijalankan
Kode front end (aplikasi mikro H5)
Kode error umum
Error berikut beserta penyebabnya dapat terjadi dalam berbagai skenario Login senyap.errcode=40078, errmsg=The temporary authorization code does not exist
Kemungkinan penyebab:-
Authorization code Login senyap tidak diperoleh dengan benar
- Untuk aplikasi mini program, gunakan
dd.getAuthCode. - Untuk aplikasi mikro H5, gunakan
dd.runtime.permission.requestAuthCodeataudd.runtime.permission.requestOperateAuthCode.
- Untuk aplikasi mini program, gunakan
-
Authorization code telah kedaluwarsa
- Authorization code Login senyap berlaku selama 5 menit setelah dibuat. Kode menjadi tidak valid setelah periode ini.
-
Authorization code telah digunakan
- Authorization code Login senyap adalah kredensial sekali pakai. Setelah digunakan, kode menjadi tidak valid dan tidak dapat digunakan kembali.
-
Jenis authorization code tercampur
- Misalnya, meneruskan authorization code Login senyap dari admin console ke API aplikasi internal untuk memperoleh
userIdpengguna menyebabkan error ini.
- Misalnya, meneruskan authorization code Login senyap dari admin console ke API aplikasi internal untuk memperoleh
errcode=41007, errmsg=Invalid ssoCode
Kemungkinan penyebab:-
ssoCode tidak ada atau salah eja
- Periksa bahwa parameter
ssoCodeyang diteruskan dari front end lengkap dan tidak terpotong.
- Periksa bahwa parameter
-
ssoCode telah kedaluwarsa
- ssoCode biasanya memiliki masa berlaku singkat (sekitar 5 menit). Pastikan untuk menggunakannya segera.
-
ssoCode telah dikonsumsi
- Kode ini hanya untuk sekali pakai. Jika sudah digunakan dalam permintaan lain, panggilan berikutnya akan gagal.
errcode=41026, errmsg=Missing tmp_auth_code
Kemungkinan penyebab:- Parameter permintaan tidak menyertakan bidang
tmp_auth_code. - Nama parameter salah eja (misalnya,
temp_auth_codeatauauthCode). - Parameter tidak diteruskan dengan benar melalui query string (seharusnya dalam bentuk
?tmp_auth_code=xxx). - Front end tidak mengembalikan authorization code dengan benar, sehingga server tidak dapat menyusun permintaan yang lengkap.
Solusi: Verifikasi bahwa front end menangani callback dengan benar dan meneruskan nilaicode, serta server dikonfigurasi untuk menerima parametertmp_auth_code.
errcode=40079, errmsg=Authorization information does not exist
Kemungkinan penyebab:- Aplikasi belum menyelesaikan alur Otorisasi, dan pengguna belum menyelesaikan konfirmasi masuk.
- Pengguna tidak berada dalam cakupan visibilitas aplikasi (misalnya, pengguna tidak ada di Kontak atau belum diberi otorisasi untuk mengakses aplikasi).
- Izin aplikasi tidak dikonfigurasi dengan benar, dan kapabilitas Login senyap tidak diaktifkan.
- Panggilan dilakukan terlalu dini, mencoba memperoleh authorization code sebelum konteks pengguna siap.
Rekomendasi: Tambahkan logika validasi sebelum panggilan untuk memastikan bahwa pengguna telah masuk ke aplikasi dan lingkungan sisi klien telah siap.
errcode=40087, errmsg=Failed to create a persistent authorization code
Kemungkinan penyebab:- Jenis aplikasi saat ini tidak mendukung pembuatan authorization code persisten.
- Izin yang diperlukan tidak ada (misalnya, izin “otorisasi persisten” tidak diaktifkan).
- Frekuensi panggilan API terlalu tinggi dan telah memicu Batas laju.
- Aplikasi dalam status abnormal (misalnya, dinonaktifkan atau sedang ditinjau).
errcode=40091, errmsg=Missing tmp_auth_code
Kemungkinan penyebab:- Tidak ada authorization code sementara (
tmp_auth_code) yang valid saat membuat authorization code persisten. - Pengguna tidak menyelesaikan tindakan otorisasi, sehingga kode sementara kosong.
- Parameter tidak diteruskan dengan benar ke API pembuatan.
Solusi: Minta pengguna untuk melakukan otorisasi ulang, ambil authCode baru dari front end, dan kirimkan ke server untuk membuat authorization code persisten.