Menyinkronkan data pengguna dari Feishu
Pengantar
Plugin Feishu / Lark menyinkronkan pengguna dan departemen organisasi Feishu ke NocoBase. Mendukung sinkronisasi penuh sesuai permintaan dan pembaruan inkremental melalui callback HTTP atau koneksi Stream.
Sebelum memulai
- Instal dan aktifkan plugin Feishu / Lark dan Sinkronisasi data pengguna.
- Buat aplikasi internal di platform terbuka Feishu, lihat Autentikasi: Feishu / Lark.
- Aktifkan izin kontak dan konfigurasikan cakupan visibilitas seperti di bawah.
Izin kontak dan cakupan visibilitas
Pada Manajemen izin aplikasi, aktifkan:
Selanjutnya konfigurasikan cakupan izin kontak (departemen dan anggota yang dapat diakses aplikasi):
- Di halaman Konfigurasi pengembangan → Izin, klik Konfigurasi pada kolom "Cakupan data yang dapat diakses" (mengaktifkan izin kontak otomatis mengarah ke sini).
- Pilih departemen dan anggota; untuk awal disarankan Semua anggota, lalu persempit bila perlu.
- Klik OK untuk menyimpan.
Tanpa Mendapatkan info dasar pengguna, API tidak mengembalikan nama dan nama panggilan hasil sinkronisasi kosong. Cakupan izin kontak dan "cakupan ketersediaan aplikasi" (siapa yang boleh memakai aplikasi) adalah dua pengaturan terpisah; hanya yang pertama memengaruhi sinkronisasi. Izin API menentukan bidang yang dapat dibaca, cakupan menentukan departemen/pengguna yang dapat dibaca; keduanya harus dikonfigurasi. Setelah berubah, jalankan ulang sinkronisasi penuh. Langganan peristiwa tidak menggantikan izin baca: pada setiap peristiwa NocoBase tetap memanggil API Feishu.
Menambahkan sumber sinkronisasi Feishu
Buka Pengguna & izin → Sinkronisasi, tambahkan sumber tipe Feishu / Lark:
Simpan dan aktifkan sumber, lalu klik Sinkronkan untuk sinkronisasi penuh pertama.
Memilih mode penerimaan peristiwa
Mode Stream
Mode Stream menjaga koneksi WebSocket persisten yang dimulai server NocoBase. Tanpa URL callback publik, token, atau kunci enkripsi.
- Pilih mode Stream di NocoBase, simpan dan aktifkan sumber.
- Di platform, pada Peristiwa & Callback, ubah penerimaan ke koneksi panjang (WebSocket) dan berlangganan peristiwa kontak.
Koneksi dimulai otomatis saat sumber aktif (dengan sambung ulang otomatis) dan diperbarui/ditutup saat sumber diubah, dinonaktifkan, atau dihapus.
Mode Stream tidak butuh alamat masuk publik maupun proxy terbalik — cocok untuk penerapan intranet. Status koneksi dapat diperiksa di log aplikasi dengan kata kunci Feishu stream client.
Callback HTTP
- Pilih callback HTTP di NocoBase dan konfigurasikan Verification Token serta opsional Encrypt Key — minimal satu wajib.
- Simpan sumber dan salin URL callback peristiwa yang tampil.
- Di platform, pada Peristiwa & Callback → Konfigurasi peristiwa, pilih kirim ke server, tempel URL, dan berlangganan peristiwa kontak.
URL callback harus dapat dijangkau Feishu (HTTPS di produksi). Dengan Encrypt Key isi callback dienkripsi.
Tanpa Verification Token atau Encrypt Key, permintaan callback ditolak (401). Sumber yang beralih ke mode Stream menutup endpoint HTTP (403).
Peristiwa inkremental yang didukung
Pengguna dengan peran Root tidak pernah dihapus oleh sinkronisasi.
Bidang yang disinkronkan
Bidang departemen
Bidang pengguna
Pemimpin departemen
Pemimpin dari data departemen disinkronkan sebagai pemilik departemen di NocoBase: satu pengguna dapat memimpin beberapa departemen, dan departemen yang dipimpin belum tentu departemen utamanya. Hanya departemen dalam cakupan yang berpartisipasi. Pemimpin yang dicabut di Feishu dicabut pada sinkronisasi berikutnya; perubahan manual dapat ditimpa.
Bidang lain seperti avatar, jabatan, dan nomor pegawai saat ini tidak disinkronkan.
Pemecahan masalah
- Hasil kosong atau departemen hilang: periksa izin kontak dan cakupan visibilitas.
- Nama panggilan kosong: aktifkan Mendapatkan info dasar pengguna (
contact:user.base:readonly) dan sinkronkan ulang. - Pengguna dilewati: periksa nilai pengenal dan kecocokan dengan autentikator.
- Callback HTTP 401: Verification Token / Encrypt Key belum ada atau salah; 403: sumber beralih ke mode Stream.
- Galat
redirect_uriatau URL callback: URL di platform harus sama persis dengan yang ditampilkan NocoBase (termasuk prefiksAPP_PUBLIC_PATH). - Tugas gagal karena batas frekuensi API: tunggu batas berlalu lalu jalankan ulang manual.

