אם פונקציית ה-callback להשלמה בשיטות Authentication מקבלת ארגומנט NSError שאינו nil, אירעה שגיאה. כדי לשלוח ללוגיקה המתאימה לטיפול בשגיאות בקוד הייצור, צריך לבדוק את קוד השגיאה מול השגיאות הנפוצות והשגיאות הספציפיות לשיטה שמפורטות בהמשך.
חלק מהשגיאות אפשר לפתור באמצעות פעולות ספציפיות של המשתמש. לדוגמה, אפשר לפתור את השגיאה FIRAuthErrorCodeUserTokenExpired על ידי כניסה מחדש של המשתמש לחשבון, ואת השגיאה FIRAuthErrorCodeWrongPassword על ידי בקשה מהמשתמש להזין את הסיסמה הנכונה.
למעט במקרים של FIRAuthErrorCodeNetworkError או FIRAuthErrorCodeTooManyRequests, ניסיון חוזר של פעולה שנכשלה עם אותם ארגומנטים לא יצליח אף פעם. אל תניחו שהפעולה נכנסה לתוקף בצד השרת.
כשבודקים שגיאות או מתעדים אותן, כדאי לעיין במילון userInfo.
FIRAuthErrorNameKey מכיל מחרוזת של שם שגיאה בפלטפורמות שונות שאפשר להשתמש בה כדי לזהות את השגיאה.
השדה NSLocalizedDescriptionKey מכיל תיאור של השגיאה. התיאור הזה מיועד למפתח, ולא למשתמש.
NSUnderlyingErrorKey מכיל את השגיאה הבסיסית שגרמה לשגיאה המדוברת, אם קיימת שגיאה בסיסית.
בנוסף לשדות העיקריים שצוינו למעלה, יכולים להיות עוד שדות במילון userInfo שיכולים לעזור לכם באבחון שגיאות.
קודי שגיאה שמשותפים לכל ה-methods של ה-API
| קוד |
משמעות |
FIRAuthErrorCodeNetworkError |
מציין שגיאה בחיבור לרשת שאירעה במהלך הפעולה. |
FIRAuthErrorCodeUserNotFound |
מציין שלא נמצא חשבון משתמש. מצב כזה יכול לקרות אם חשבון המשתמש נמחק. |
FIRAuthErrorCodeUserTokenExpired |
מציין שתוקף האסימון של המשתמש הנוכחי פג. לדוגמה, יכול להיות שהמשתמש שינה את סיסמת החשבון במכשיר אחר. צריך לבקש מהמשתמש להיכנס שוב למכשיר. |
FIRAuthErrorCodeTooManyRequests |
מציין שהבקשה נחסמה אחרי שמספר חריג של בקשות נשלחו מהמכשיר של המתקשר לשרתים של Firebase Authentication. כדאי לחכות קצת ואז לנסות שוב. |
FIRAuthErrorCodeInvalidAPIKey |
מציין שהאפליקציה הוגדרה עם מפתח API לא תקין. |
FIRAuthErrorCodeAppNotAuthorized |
מציין שהאפליקציה לא מורשית להשתמש באימות ב-Firebase עם מפתח ה-API שסופק. צריך לעבור אל Google API Console ולבדוק בכרטיסייה 'פרטי כניסה' שמזהה חבילת האפליקציה שבה אתם משתמשים מופיע ברשימת ההיתרים של מפתח ה-API. |
FIRAuthErrorCodeKeychainError |
מציין שקרתה שגיאה בזמן הגישה למחזיק המפתחות. השדות NSLocalizedFailureReasonErrorKey ו-NSUnderlyingErrorKey במילון NSError.userInfo יכילו מידע נוסף על השגיאה שנתקלתם בה. |
FIRAuthErrorCodeInternalError |
מציין שאירעה שגיאה פנימית. צריך לדווח על השגיאה עם אובייקט NSError כולו. |
קודי שגיאה ספציפיים לשיטה
FIRAuth
fetchProvidersForEmail:completion:
| קוד |
משמעות |
FIRAuthErrorCodeInvalidEmail |
מציין שכתובת האימייל לא תקינה. |
signInWithEmail:password:completion:
| קוד |
משמעות |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות עם כתובת אימייל וסיסמה לא מופעלים. מפעילים אותם במסוף Firebase (עוברים אל אבטחה > אימות > הכרטיסייה שיטת כניסה). |
FIRAuthErrorCodeInvalidEmail |
מציין שכתובת האימייל לא תקינה. |
FIRAuthErrorCodeUserDisabled |
מציין שהחשבון של המשתמש מושבת. |
FIRAuthErrorCodeWrongPassword |
מציין שהמשתמש ניסה להיכנס לחשבון עם סיסמה שגויה. |
signInWithCredential:completion:
| קוד |
משמעות |
FIRAuthErrorCodeInvalidCredential |
מציין שהאישורים שסופקו לא תקפים. יכול להיות שהתוקף שלו פג או שהוא לא תקין. |
FIRAuthErrorCodeInvalidEmail |
אם סוג האישורים הוא EmailPasswordAuthCredential, הערך הזה מציין שהפורמט של כתובת האימייל שגוי. |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות עם ספק הזהויות שמיוצג על ידי פרטי הכניסה לא מופעלים. מפעילים אותם במסוף Firebase (עוברים אל אבטחה > אימות > הכרטיסייה שיטת כניסה). |
FIRAuthErrorCodeEmailAlreadyInUse |
מציין שכתובת האימייל שמאומתת על ידי פרטי הכניסה (לדוגמה, כתובת האימייל באסימון גישה של פייסבוק) כבר נמצאת בשימוש בחשבון קיים, שלא ניתן לאמת אותו באמצעות שיטת הכניסה הזו. קוראים ל-fetchProvidersForEmail כדי לקבל את כתובת האימייל של המשתמש, ואז מבקשים ממנו להיכנס באמצעות אחד מספקי הכניסה שמוחזרים. השגיאה הזו תוצג רק אם האפשרות 'חשבון אחד לכל כתובת אימייל' מופעלת במסוף Firebase (עוברים אל אבטחה > אימות > הכרטיסייה הגדרות). |
FIRAuthErrorCodeUserDisabled |
מציין שהחשבון של המשתמש מושבת. |
FIRAuthErrorCodeWrongPassword |
מציין שהמשתמש ניסה להיכנס עם סיסמה שגויה, אם פרטי הכניסה הם מהסוג EmailPasswordAuthCredential. |
signInAnonymouslyWithCompletion:
| קוד |
משמעות |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות אנונימיים לא מופעלים. מפעילים אותם במסוף Firebase (עוברים אל אבטחה > אימות > הכרטיסייה שיטת כניסה). |
signInWithCustomToken:completion:
| קוד |
משמעות |
FIRAuthErrorCodeInvalidCustomToken |
מציין שגיאת אימות בטוקן המותאם אישית. |
FIRAuthErrorCodeCustomTokenMismatch |
מציין שחשבון השירות ומפתח ה-API שייכים לפרויקטים שונים. |
createUserWithEmail:password:completion:
| קוד |
משמעות |
FIRAuthErrorCodeInvalidEmail |
מציין שכתובת האימייל לא תקינה. |
FIRAuthErrorCodeEmailAlreadyInUse |
הודעה שמופיעה אם כתובת האימייל שבה ניסיתם להירשם כבר קיימת. מתקשרים אל fetchProvidersForEmail כדי לבדוק באילו מנגנוני כניסה המשתמש השתמש, ומבקשים מהמשתמש להיכנס באמצעות אחד מהם. |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות עם כתובת אימייל וסיסמה לא מופעלים. מפעילים אותם במסוף Firebase (עוברים אל אבטחה > אימות > הכרטיסייה שיטת כניסה). |
FIRAuthErrorCodeWeakPassword |
מציין ניסיון להגדיר סיסמה שנחשבת חלשה מדי. השדה NSLocalizedFailureReasonErrorKey באובייקט המילון NSError.userInfo יכיל הסבר מפורט יותר שאפשר להציג למשתמש. |
signOut:
| קוד |
משמעות |
FIRAuthErrorCodeKeychainError |
הודעה על שגיאה שקרתה בזמן הגישה למחזיק המפתחות. השדות NSLocalizedFailureReasonErrorKey ו-NSUnderlyingErrorKey במילון NSError.userInfo יכילו מידע נוסף על השגיאה שנתקלתם בה. |
FIRUser
שגיאות נפוצות בפעולות של FIRUser
| קוד |
משמעות |
FIRAuthErrorCodeInvalidUserToken |
מציין שאסימון הרענון של המשתמש שמחובר לחשבון, שמכיל פרטי סשן, לא תקין. צריך לבקש מהמשתמש להיכנס שוב למכשיר. |
FIRAuthErrorCodeUserDisabled |
מציין שהחשבון של המשתמש מושבת ואי אפשר להשתמש בו יותר עד שמפעילים אותו מחדש במסוף Firebase (עוברים אל אבטחה > אימות > הכרטיסייה משתמשים). |
reauthenticateWithCredential:completion:
| קוד |
משמעות |
FIRAuthErrorCodeInvalidCredential |
מציין שהאישורים שסופקו לא תקפים. יכול להיות שהתוקף שלו פג או שהוא לא תקין. |
FIRAuthErrorCodeInvalidEmail |
אם סוג האישורים הוא EmailPasswordAuthCredential, הערך הזה מציין שהפורמט של כתובת האימייל שגוי. |
FIRAuthErrorCodeWrongPassword |
מציין שהמשתמש ניסה לבצע אימות מחדש עם סיסמה שגויה, אם פרטי הכניסה הם מהסוג EmailPasswordAuthCredential. |
FIRAuthErrorCodeUserMismatch |
מציין שהייתה ניסיון לאמת מחדש משתמש שלא מחובר כרגע. |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות עם ספק הזהויות שמיוצג על ידי פרטי הכניסה לא מופעלים. כדי להפעיל אותם במסוף Firebase, עוברים אל Security (אבטחה) > Authentication (אימות). |
FIRAuthErrorCodeEmailAlreadyInUse |
מציין שכתובת האימייל שצוינה על ידי פרטי הכניסה (למשל, כתובת האימייל בטוקן גישה של פייסבוק) כבר נמצאת בשימוש בחשבון קיים, ואי אפשר לאמת מחדש את החשבון הזה באמצעות שיטת הכניסה הזו. קוראים ל-fetchProvidersForEmail כדי לקבל את כתובת האימייל של המשתמש, ואז מבקשים ממנו להיכנס באמצעות אחד מספקי הכניסה שמוחזרים. השגיאה הזו תוצג רק אם האפשרות 'חשבון אחד לכל כתובת אימייל' מופעלת במסוף Firebase (עוברים אל אבטחה > אימות > הכרטיסייה הגדרות). |
FIRAuthErrorCodeUserDisabled |
מציין שהחשבון של המשתמש מושבת. |
updateEmail:completion:
| קוד |
משמעות |
FIRAuthErrorCodeEmailAlreadyInUse |
מציין שכתובת האימייל כבר נמצאת בשימוש בחשבון אחר. |
FIRAuthErrorCodeInvalidEmail |
מציין שכתובת האימייל לא תקינה. |
FIRAuthErrorCodeRequiresRecentLogin |
עדכון כתובת האימייל של משתמש הוא פעולה רגישה מבחינת אבטחה, שנדרשת לגביה התחברות עדכנית של המשתמש. השגיאה הזו מציינת שהמשתמש לא נכנס לחשבון בזמן האחרון. כדי לפתור את הבעיה, צריך לאמת מחדש את המשתמש באמצעות הפעלת reauthenticateWithCredential:completion: ב-FIRUser. |
updatePassword:completion:
| קוד |
משמעות |
FIRAuthErrorCodeOperationNotAllowed |
מציין שהאדמין השבית את הכניסה באמצעות ספק הזהויות שצוין. |
FIRAuthErrorCodeRequiresRecentLogin |
עדכון הסיסמה של משתמש הוא פעולה רגישה מבחינת אבטחה, שנדרשת לגביה התחברות עדכנית של המשתמש. השגיאה הזו מציינת שהמשתמש לא נכנס לחשבון בזמן האחרון. כדי לפתור את הבעיה, צריך לבצע אימות מחדש של המשתמש באמצעות הפעלת reauthenticateWithCredential:completion: ב-FIRUser. |
FIRAuthErrorCodeWeakPassword |
מציין ניסיון להגדיר סיסמה שנחשבת חלשה מדי. השדה NSLocalizedFailureReasonErrorKey באובייקט המילון NSError.userInfo יכיל הסבר מפורט יותר שאפשר להציג למשתמש. |
linkWithCredential:completion:
| קוד |
משמעות |
FIRAuthErrorCodeProviderAlreadyLinked |
מציין ניסיון לקשר ספק מסוג שכבר מקושר לחשבון הזה. |
FIRAuthErrorCodeCredentialAlreadyInUse |
מציין ניסיון לקשר אישורים שכבר קושרו לחשבון Firebase אחר. |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות עם ספק הזהויות שמיוצג על ידי פרטי הכניסה לא מופעלים. מפעילים אותם במסוף Firebase (עוברים אל אבטחה > אימות > הכרטיסייה שיטת כניסה). |
יכול להיות שהשיטה הזו תחזיר גם קודי שגיאה שמשויכים ל-updateEmail:completion: ול-updatePassword:completion: ב-FIRUser.
unlinkFromProvider:completion:
| קוד |
משמעות |
FIRAuthErrorCodeNoSuchProvider |
האינדיקטור הזה מציין ניסיון לבטל את הקישור של ספק שלא מקושר לחשבון. |
FIRAuthErrorCodeRequiresRecentLogin |
עדכון כתובת האימייל היא פעולה רגישה מבחינת אבטחה, שמחייבת התחברות עדכנית של המשתמש. השגיאה הזו מציינת שהמשתמש לא נכנס לחשבון בזמן האחרון. כדי לפתור את הבעיה, צריך לבצע אימות מחדש של המשתמש באמצעות הפעלת reauthenticateWithCredential:completion: ב-FIRUser. |
sendEmailVerificationWithCompletion:
| קוד |
משמעות |
FIRAuthErrorCodeUserNotFound |
מציין שלא נמצא חשבון משתמש. |
deleteWithCompletion:
| קוד |
משמעות |
FIRAuthErrorCodeRequiresRecentLogin |
מחיקת חשבון משתמש היא פעולה רגישה מבחינת אבטחה, שנדרשת לגביה התחברות לחשבון על ידי המשתמש בזמן האחרון. השגיאה הזו מציינת שהמשתמש לא נכנס לחשבון בזמן האחרון. כדי לפתור את הבעיה, צריך לאמת מחדש את המשתמש באמצעות הפעלת reauthenticateWithCredential:completion: ב-FIRUser. |