Menangani Error Autentikasi Platform Apple Firebase

Apabila callback penyelesaian pada metode Authentication menerima argumen NSError yang tidak bernilai nol, berarti telah terjadi error. Untuk menjalankan logika penanganan error yang sesuai dalam kode produksi, cocokkan kode error itu dengan error umum dan error yang terjadi karena metode tertentu, sesuai dengan yang tercantum di bawah ini.

Sebagian error dapat diselesaikan dengan tindakan tertentu dari pengguna, misalnya, FIRAuthErrorCodeUserTokenExpired dapat diselesaikan dengan membuat pengguna tersebut login kembali, sementara FIRAuthErrorCodeWrongPassword dengan meminta pengguna memasukkan sandi yang benar.

Kecuali dalam kasus FIRAuthErrorCodeNetworkError atau FIRAuthErrorCodeTooManyRequests, mencoba kembali pengoperasian yang gagal dengan argumen yang sama tidak akan pernah berhasil. Jangan membuat asumsi bahwa pengoperasian tersebut berjalan di sisi server atau tidak.

Saat menyelidiki atau membuat log error, tinjau kamus userInfo. FIRAuthErrorNameKey berisi string nama error lintas platform yang bisa dipakai untuk mengidentifikasi error. NSLocalizedDescriptionKey berisi deskripsi error. Deskripsi ini ditujukan untuk developer, bukan pengguna. NSUnderlyingErrorKey berisi error yang mendasar dan menyebabkan error terkait, jika error yang mendasar tersebut memang ada.

Selain kolom utama yang tercantum di atas, kolom lain dalam kamus userInfo juga dapat Anda gunakan untuk mendiagnosis error.

Kode error yang digunakan oleh semua metode API

Kode Arti
FIRAuthErrorCodeNetworkError Mengindikasikan terjadinya error pada jaringan selama operasi berlangsung.
FIRAuthErrorCodeUserNotFound Mengindikasikan bahwa akun pengguna tidak ditemukan. Hal ini bisa terjadi jika akun pengguna telah dihapus.
FIRAuthErrorCodeUserTokenExpired Mengindikasikan bahwa token pengguna saat ini sudah tidak berlaku, misalnya pengguna mungkin telah mengganti sandi akun pada perangkat lain. Anda harus meminta pengguna untuk login kembali pada perangkat ini.
FIRAuthErrorCodeTooManyRequests Mengindikasikan bahwa permintaan telah diblokir setelah permintaan dengan jumlah yang tidak normal telah diajukan dari perangkat pemanggil ke server Firebase Authentication. Coba lagi setelah beberapa saat.
FIRAuthErrorCodeInvalidAPIKey Mengindikasikan bahwa aplikasi telah dikonfigurasikan dengan kunci API yang tidak valid.
FIRAuthErrorCodeAppNotAuthorized Mengindikasikan bahwa Aplikasi tidak diberi wewenang untuk menggunakan Firebase Authentication dengan Kunci API yang disediakan. Buka Konsol API Google dan lihat di tab kredensial untuk mengetahui apakah kunci API yang Anda gunakan memiliki ID paket aplikasi yang diizinkan atau tidak.
FIRAuthErrorCodeKeychainError Mengindikasikan bahwa telah terjadi error saat mengakses keychain. Kolom NSLocalizedFailureReasonErrorKey dan NSUnderlyingErrorKey dalam kamus NSError.userInfo akan berisi informasi lebih lanjut mengenai error yang ditemukan.
FIRAuthErrorCodeInternalError Mengindikasikan terjadinya error internal. Laporkan error ini dengan keseluruhan objek NSError.

Kode error karena metode tertentu

FIRAuth

fetchProvidersForEmail:completion:

Kode Arti
FIRAuthErrorCodeInvalidEmail Mengindikasikan bahwa format alamat email salah.

signInWithEmail:password:completion:

Kode Arti
FIRAuthErrorCodeOperationNotAllowed Mengindikasikan bahwa email dan sandi akun tidak diaktifkan. Aktifkan keduanya di bagian Authentication pada Firebase console.
FIRAuthErrorCodeInvalidEmail Mengindikasikan bahwa format alamat email salah.
FIRAuthErrorCodeUserDisabled Mengindikasikan bahwa akun pengguna dinonaktifkan.
FIRAuthErrorCodeWrongPassword Mengindikasikan bahwa pengguna berusaha login dengan sandi yang salah.

signInWithCredential:completion:

Kode Arti
FIRAuthErrorCodeInvalidCredential Mengindikasikan bahwa kredensial yang diberikan tidak valid. Hal ini bisa terjadi jika kredensial sudah tidak berlaku atau dalam format yang salah.
FIRAuthErrorCodeInvalidEmail Mengindikasikan bahwa alamat email dalam format yang salah, jika kredensial memiliki tipe EmailPasswordAuthCredential.
FIRAuthErrorCodeOperationNotAllowed Mengindikasikan bahwa akun dengan penyedia identitas yang diwakili oleh kredensial tidak diaktifkan. Aktifkan keduanya di bagian Authentication pada Firebase console.
FIRAuthErrorCodeEmailAlreadyInUse Mengindikasikan bahwa email yang disebutkan dalam kredensial (mis. email dalam token akses Facebook) sudah dipakai oleh akun yang sudah ada dan tidak bisa diautentikasi dengan metode login ini. Panggil fetchProvidersForEmail untuk email pengguna ini lalu minta mereka login dengan salah satu penyedia login yang ditampilkan. Error ini hanya akan ditampilkan jika setelan "Satu akun per alamat email" diaktifkan di Firebase console, di bagian setelan Authentication.
FIRAuthErrorCodeUserDisabled Mengindikasikan bahwa akun pengguna dinonaktifkan.
FIRAuthErrorCodeWrongPassword Mengindikasikan bahwa pengguna berusaha login dengan sandi yang salah, jika kredensial memiliki tipe EmailPasswordAuthCredential.

signInAnonymouslyWithCompletion:

Kode Arti
FIRAuthErrorCodeOperationNotAllowed Mengindikasikan bahwa akun anonim tidak diaktifkan. Aktifkan keduanya di bagian Authentication pada Firebase console.

signInWithCustomToken:completion:

Kode Arti
FIRAuthErrorCodeInvalidCustomToken Mengindikasikan terjadinya error validasi pada token kustom.
FIRAuthErrorCodeCustomTokenMismatch Mengindikasikan bahwa akun layanan dan kunci API dimiliki oleh project yang berbeda.

createUserWithEmail:password:completion:

Kode Arti
FIRAuthErrorCodeInvalidEmail Mengindikasikan bahwa format alamat email salah.
FIRAuthErrorCodeEmailAlreadyInUse Mengindikasikan bahwa email yang digunakan untuk mendaftar sudah ada. Panggil fetchProvidersForEmail untuk memeriksa mekanisme login yang digunakan pengguna dan minta pengguna untuk login dengan salah satunya.
FIRAuthErrorCodeOperationNotAllowed Mengindikasikan bahwa email dan sandi akun tidak diaktifkan. Aktifkan keduanya di bagian Authentication pada Firebase console.
FIRAuthErrorCodeWeakPassword Mengindikasikan upaya untuk membuat sandi yang dianggap terlalu lemah. Kolom NSLocalizedFailureReasonErrorKey di objek kamus NSError.userInfo akan berisi penjelasan yang lebih terperinci yang dapat ditampilkan kepada pengguna.

signOut:

Kode Arti
FIRAuthErrorCodeKeychainError Mengindikasikan terjadinya error saat mengakses keychain. Kolom NSLocalizedFailureReasonErrorKey dan NSUnderlyingErrorKey dalam kamus NSError.userInfo akan berisi informasi lebih lanjut mengenai error yang ditemukan.

FIRUser

Error umum untuk pengoperasian FIRUser

Kode Arti
FIRAuthErrorCodeInvalidUserToken Mengindikasikan bahwa token refresh, yang berisi informasi sesi milik pengguna yang login, tidak valid. Anda harus meminta pengguna untuk login kembali pada perangkat ini.
FIRAuthErrorCodeUserDisabled Mengindikasikan bahwa akun pengguna dinonaktifkan dan tidak dapat dipakai hingga diaktifkan kembali dari dalam panel Pengguna di Firebase console.

reauthenticateWithCredential:completion:

Kode Arti
FIRAuthErrorCodeInvalidCredential Mengindikasikan bahwa kredensial yang diberikan tidak valid. Hal ini bisa terjadi jika kredensial sudah tidak berlaku atau dalam format yang salah.
FIRAuthErrorCodeInvalidEmail Mengindikasikan bahwa alamat email dalam format yang salah, jika kredensial memiliki tipe EmailPasswordAuthCredential.
FIRAuthErrorCodeWrongPassword Mengindikasikan bahwa pengguna berupaya untuk melakukan autentikasi ulang dengan sandi yang salah jika kredensial memiliki tipe EmailPasswordAuthCredential.
FIRAuthErrorCodeUserMismatch Mengindikasikan bahwa sebuah upaya dilakukan untuk mengautentikasi ulang dengan pengguna yang bukan pengguna saat ini.
FIRAuthErrorCodeOperationNotAllowed Mengindikasikan bahwa akun dengan penyedia identitas yang diwakili oleh kredensial tidak diaktifkan. Aktifkan keduanya di bagian Authentication pada Firebase console.
FIRAuthErrorCodeEmailAlreadyInUse Mengindikasikan bahwa email yang disebut dalam kredensial (mis. email dalam token akses Facebook) sudah dipakai oleh akun yang sudah ada dan tidak bisa diautentikasi ulang dengan metode login ini. Panggil fetchProvidersForEmail untuk email pengguna ini lalu minta mereka login dengan salah satu penyedia login yang ditampilkan. Error ini hanya akan ditampilkan jika setelan "Satu akun per alamat email" diaktifkan di Firebase console, di bagian setelan Authentication.
FIRAuthErrorCodeUserDisabled Mengindikasikan bahwa akun pengguna dinonaktifkan.

updateEmail:completion:

Kode Arti
FIRAuthErrorCodeEmailAlreadyInUse Mengindikasikan bahwa email telah digunakan oleh akun lain.
FIRAuthErrorCodeInvalidEmail Mengindikasikan bahwa format alamat email salah.
FIRAuthErrorCodeRequiresRecentLogin Memperbarui email pengguna merupakan operasi yang sensitif terhadap keamanan dan pengguna diharuskan untuk login baru-baru ini. Error ini mengindikasikan bahwa pengguna sudah lama tidak login. Untuk menyelesaikannya, lakukan autentikasi ulang pada pengguna dengan mengaktifkan reauthenticateWithCredential:completion: pada FIRUser.

updatePassword:completion:

Kode Arti
FIRAuthErrorCodeOperationNotAllowed Menunjukkan bahwa administrator menonaktifkan proses login dengan penyedia identitas yang ditentukan.
FIRAuthErrorCodeRequiresRecentLogin Memperbarui sandi pengguna merupakan operasi yang sensitif terhadap keamanan dan pengguna diharuskan untuk login baru-baru ini. Error ini mengindikasikan bahwa pengguna sudah lama tidak login. Untuk menyelesaikannya, lakukan autentikasi ulang pada pengguna dengan mengaktifkan reauthenticateWithCredential:completion: pada FIRUser.
FIRAuthErrorCodeWeakPassword Mengindikasikan upaya untuk membuat sandi yang dianggap terlalu lemah. Kolom NSLocalizedFailureReasonErrorKey di objek kamus NSError.userInfo akan berisi penjelasan yang lebih terperinci yang dapat ditampilkan kepada pengguna.

linkWithCredential:completion:

Kode Arti
FIRAuthErrorCodeProviderAlreadyLinked Mengindikasikan upaya untuk menghubungkan penyedia dengan tipe yang sudah dihubungkan ke akun ini.
FIRAuthErrorCodeCredentialAlreadyInUse Mengindikasikan upaya untuk menghubungkan dengan kredensial yang telah dihubungkan dengan akun Firebase lain.
FIRAuthErrorCodeOperationNotAllowed Mengindikasikan bahwa akun dengan penyedia identitas yang diwakili oleh kredensial tidak diaktifkan. Aktifkan keduanya di bagian Authentication pada Firebase console.

Metode ini juga dapat menampilkan kode error yang terkait dengan updateEmail:completion: dan updatePassword:completion: pada FIRUser.

unlinkFromProvider:completion:

Kode Arti
FIRAuthErrorCodeNoSuchProvider Mengindikasikan upaya untuk memutus kaitan dengan penyedia yang tidak terkait dengan akun.
FIRAuthErrorCodeRequiresRecentLogin Memperbarui email merupakan operasi yang sensitif terhadap keamanan dan pengguna diharuskan untuk login baru-baru ini. Error ini mengindikasikan bahwa pengguna sudah lama tidak login. Untuk menyelesaikannya, lakukan autentikasi ulang pada pengguna dengan mengaktifkan reauthenticateWithCredential:completion: pada FIRUser.

sendEmailVerificationWithCompletion:

Kode Arti
FIRAuthErrorCodeUserNotFound Mengindikasikan bahwa akun pengguna tidak ditemukan.

deleteWithCompletion:

Kode Arti
FIRAuthErrorCodeRequiresRecentLogin Menghapus akun pengguna merupakan operasi yang sensitif terhadap keamanan dan memerlukan pengguna untuk login baru-baru ini. Error ini mengindikasikan bahwa pengguna sudah lama tidak login. Untuk menyelesaikannya, lakukan autentikasi ulang pada pengguna dengan mengaktifkan reauthenticateWithCredential:completion: pada FIRUser.