אם הקריאה החוזרת של ההשלמה ב-methods Authentication מקבלת ארגומנט NSError
אינו אפס, אירעה שגיאה. כדי לשלוח לטיפול מתאים בשגיאות
את הלוגיקה שבקוד הייצור, לבדוק את קוד השגיאה מול שגיאות נפוצות
והשגיאות הספציפיות האלה, שמפורטות בהמשך.
יש שגיאות שאפשר לפתור על ידי פעולות מסוימות של המשתמשים, לדוגמה,
אפשר לפתור את הבעיה FIRAuthErrorCodeUserTokenExpired
על ידי כניסה של המשתמש לחשבון
שוב, וFIRAuthErrorCodeWrongPassword
באמצעות בקשה מהמשתמש לספק
הסיסמה הנכונה.
מלבד במקרה של FIRAuthErrorCodeNetworkError
או
FIRAuthErrorCodeTooManyRequests
, ניסיון חוזר לפעולה נכשלת עם אותה פעולה
ארגומנטים לעולם לא יצליחו. אל תניח לי, אם הפעולה,
נכנסה לתוקף בצד השרת.
במהלך בדיקה או רישום של שגיאות ביומן, כדאי לעיין במילון userInfo
.
הערך FIRAuthErrorNameKey
מכיל מחרוזת שם של שגיאה בפלטפורמות שונות שיכול להיות
שמשמש לזיהוי השגיאה.
NSLocalizedDescriptionKey
מכיל תיאור של השגיאה. הזה
מיועד למפתח, לא למשתמש.
השדה NSUnderlyingErrorKey
מכיל את השגיאה הבסיסית שגרמה לשגיאה הרלוונטית, אם יש שגיאה בסיסית.
בנוסף לשדות הראשיים שצוינו למעלה, יכולים להיות שדות נוספים ברמה
מילון של userInfo
שיכול להועיל לאבחון שגיאות.
קודי שגיאה נפוצים לכל שיטות ה-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:complete:
קוד |
משמעות |
FIRAuthErrorCodeInvalidEmail |
מציינת שהתבנית של כתובת האימייל שגויה. |
signInWithEmail:password:complete:
קוד |
משמעות |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות אימייל וסיסמאות לא מופעלים. צריך להפעיל אותם בקטע 'אימות' במסוף Firebase. |
FIRAuthErrorCodeInvalidEmail |
מציינת שהתבנית של כתובת האימייל שגויה. |
FIRAuthErrorCodeUserDisabled |
מציין שהחשבון של המשתמש מושבת. |
FIRAuthErrorCodeWrongPassword |
מציין שהמשתמש ניסה להיכנס לחשבון עם סיסמה שגויה. |
signInWithCredential:complete:
קוד |
משמעות |
FIRAuthErrorCodeInvalidCredential |
מציין שפרטי הכניסה שסופקו לא חוקיים. זה יכול לקרות אם התוקף שלו פג או שהפורמט שלו שגוי. |
FIRAuthErrorCodeInvalidEmail |
אם פרטי הכניסה הם מסוג EmailPasswordAuthCredential , הקוד הזה מציין שכתובת האימייל לא תקינה. |
FIRAuthErrorCodeOperationNotAllowed |
מציין שהחשבונות של ספק הזהויות שמיוצג על ידי פרטי הכניסה לא מופעלים. צריך להפעיל אותם בקטע 'אימות' במסוף Firebase. |
FIRAuthErrorCodeEmailAlreadyInUse |
מציין את כתובת האימייל שצוינה בפרטי הכניסה (למשל, האימייל באסימון גישה של Facebook) כבר נמצא בשימוש של חשבון קיים, שלא ניתן לאמת אותו באמצעות שיטת הכניסה הזו. צריך להתקשר אל fetchProvidersForEmail כדי לקבל את כתובת האימייל של המשתמש הזה, ואז לבקש ממנו להיכנס לחשבון אצל אחד מספקי הכניסה שחוזרים. השגיאה הזו תופיע רק אם בוחרים באפשרות 'חשבון אחד לכל כתובת אימייל' ההגדרה מופעלת במסוף Firebase, בהגדרות של Authentication. |
FIRAuthErrorCodeUserDisabled |
מציין שהחשבון של המשתמש מושבת. |
FIRAuthErrorCodeWrongPassword |
מציין שהמשתמש ניסה להיכנס באמצעות סיסמה שגויה, אם פרטי הכניסה הם מסוג EmailPasswordAuthCredential . |
signInAnonymouslyWithCompletion:
קוד |
משמעות |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות אנונימיים לא מופעלים. מפעילים אותם בקטע Auth (אימות) במסוף Firebase. |
signInWithCustomToken:complete:
קוד |
משמעות |
FIRAuthErrorCodeInvalidCustomToken |
מציין שגיאת אימות באסימון המותאם אישית. |
FIRAuthErrorCodeCustomTokenMismatch |
מציין את חשבון השירות ומפתח ה-API שייכים לפרויקטים שונים. |
createUserWithEmail:password:complete:
קוד |
משמעות |
FIRAuthErrorCodeInvalidEmail |
מציינת שהתבנית של כתובת האימייל שגויה. |
FIRAuthErrorCodeEmailAlreadyInUse |
כתובת האימייל ששימשה לניסיון ההרשמה כבר קיימת. צריך להתקשר אל fetchProvidersForEmail כדי לבדוק באילו מנגנוני כניסה המשתמש השתמש, ולבקש מהמשתמש להיכנס באמצעות אחד מהם. |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות אימייל וסיסמה לא מופעלים. להפעיל אותן בקטע Authentication במסוף Firebase. |
FIRAuthErrorCodeWeakPassword |
הסטטוס הזה מציין ניסיון להגדיר סיסמה שנחשבת לחלשה מדי. השדה NSLocalizedFailureReasonErrorKey באובייקט המילון NSError.userInfo יכיל הסבר מפורט יותר שניתן להציג למשתמש. |
signOut:
קוד |
משמעות |
FIRAuthErrorCodeKeychainError |
צוינה שגיאה במהלך הגישה ל-Keychain. השדות NSLocalizedFailureReasonErrorKey ו-NSUnderlyingErrorKey במילון NSError.userInfo יכילו מידע נוסף על השגיאה שבה נתקלת. |
FIRUser
שגיאות נפוצות בפעולות של FIRUser
קוד |
משמעות |
FIRAuthErrorCodeInvalidUserToken |
מציין שאסימון הרענון של המשתמש שמחובר לחשבון, שמכיל את פרטי הסשן, לא תקף. צריך לבקש מהמשתמש להיכנס שוב למכשיר הזה. |
FIRAuthErrorCodeUserDisabled |
הסטטוס הזה מציין שהחשבון של המשתמש מושבת ולא ניתן להשתמש בו יותר עד להפעלה מחדש בחלונית 'משתמשים' במסוף Firebase. |
reauthenticateWithCredential:complete:
קוד |
משמעות |
FIRAuthErrorCodeInvalidCredential |
מציין שפרטי הכניסה שסופקו לא חוקיים. זה יכול לקרות אם התוקף שלו פג או שהפורמט שלו שגוי. |
FIRAuthErrorCodeInvalidEmail |
מציין שכתובת האימייל שגויה, אם פרטי הכניסה הם מסוג EmailPasswordAuthCredential . |
FIRAuthErrorCodeWrongPassword |
מציין שהמשתמש ניסה לבצע אימות מחדש עם סיסמה שגויה, אם פרטי הכניסה הם מסוג EmailPasswordAuthCredential . |
FIRAuthErrorCodeUserMismatch |
מציין שנעשה ניסיון לבצע אימות מחדש מול משתמש שאינו המשתמש הנוכחי. |
FIRAuthErrorCodeOperationNotAllowed |
מציין שחשבונות עם ספק הזהויות המיוצג על ידי פרטי הכניסה לא מופעלים. צריך להפעיל אותם בקטע 'אימות' במסוף Firebase. |
FIRAuthErrorCodeEmailAlreadyInUse |
מציין את כתובת האימייל שצוינה בפרטי הכניסה (למשל, האימייל באסימון גישה של Facebook) כבר נמצא בשימוש של חשבון קיים, שלא ניתן לאמת אותו מחדש בשיטת הכניסה הזו. צריך להתקשר אל fetchProvidersForEmail כדי לקבל את כתובת האימייל של המשתמש הזה, ואז לבקש ממנו להיכנס לחשבון אצל אחד מספקי הכניסה שחוזרים. השגיאה הזו תופיע רק אם בוחרים באפשרות 'חשבון אחד לכל כתובת אימייל' ההגדרה מופעלת במסוף Firebase, בהגדרות של Authentication. |
FIRAuthErrorCodeUserDisabled |
מציין שהחשבון של המשתמש מושבת. |
updateEmail:complete:
קוד |
משמעות |
FIRAuthErrorCodeEmailAlreadyInUse |
מציין שכתובת האימייל כבר נמצאת בשימוש של חשבון אחר. |
FIRAuthErrorCodeInvalidEmail |
המשמעות היא שכתובת האימייל לא תקינה. |
FIRAuthErrorCodeRequiresRecentLogin |
עדכון כתובת האימייל של משתמש הוא פעולה רגישה מבחינת אבטחה, שמחייבת התחברות מהזמן האחרון של המשתמש. השגיאה הזו מציינת שהמשתמש לא נכנס מספיק לחשבון לאחרונה. כדי לפתור את הבעיה, צריך לאמת מחדש את המשתמש על ידי הפעלת reauthenticateWithCredential:completion: ב-FIRUser . |
updatePassword:complete:
קוד |
משמעות |
FIRAuthErrorCodeOperationNotAllowed |
מציין שהאדמין השבית את הכניסה באמצעות ספק הזהויות שצוין. |
FIRAuthErrorCodeRequiresRecentLogin |
עדכון סיסמה של משתמש הוא פעולה רגישה מבחינת אבטחה, שמחייבת התחברות מהזמן האחרון של המשתמש. השגיאה הזו מציינת שהמשתמש לא נכנס מספיק לחשבון לאחרונה. כדי לפתור את הבעיה, צריך לאמת מחדש את המשתמש על ידי הפעלת reauthenticateWithCredential:completion: ב-FIRUser . |
FIRAuthErrorCodeWeakPassword |
הסטטוס הזה מציין ניסיון להגדיר סיסמה שנחשבת לחלשה מדי. השדה NSLocalizedFailureReasonErrorKey באובייקט המילון NSError.userInfo יכיל הסבר מפורט יותר שאפשר להציג למשתמש. |
linkWithCredential:complete:
קוד |
משמעות |
FIRAuthErrorCodeProviderAlreadyLinked |
מציין ניסיון לקשר ספק מסוג שכבר מקושר לחשבון הזה. |
FIRAuthErrorCodeCredentialAlreadyInUse |
מציין ניסיון לקשר פרטי כניסה שכבר קושרו לחשבון Firebase אחר. |
FIRAuthErrorCodeOperationNotAllowed |
מציין שהחשבונות של ספק הזהויות שמיוצג על ידי פרטי הכניסה לא מופעלים. צריך להפעיל אותם בקטע 'אימות' במסוף Firebase. |
שיטה זו עשויה גם להחזיר קודי שגיאה המשויכים ל-updateEmail:completion:
ול-
updatePassword:completion:
בתאריך FIRUser
.
linkFromProvider:complete:
קוד |
משמעות |
FIRAuthErrorCodeNoSuchProvider |
מציין ניסיון לבטל את הקישור של ספק שלא מקושר לחשבון. |
FIRAuthErrorCodeRequiresRecentLogin |
עדכון האימייל הוא פעולה רגישה מבחינת אבטחה שמחייבת התחברות מהזמן האחרון של המשתמש. השגיאה הזו מציינת שהמשתמש לא נכנס מספיק לחשבון לאחרונה. כדי לפתור את הבעיה, צריך לבצע אימות מחדש של המשתמש על ידי הפעלת reauthenticateWithCredential:completion: ב-FIRUser . |
sendEmailAuthenticationWithCompletion:
קוד |
משמעות |
FIRAuthErrorCodeUserNotFound |
הקוד הזה מציין שחשבון המשתמש לא נמצא. |
deleteWithCompletion:
קוד |
משמעות |
FIRAuthErrorCodeRequiresRecentLogin |
מחיקה של חשבון משתמש היא פעולה רגישה מבחינת אבטחה שמחייבת התחברות של המשתמש לאחרונה. השגיאה הזו מציינת שהמשתמש לא נכנס מספיק לחשבון לאחרונה. כדי לפתור את הבעיה, צריך לאמת מחדש את המשתמש על ידי הפעלת reauthenticateWithCredential:completion: ב-FIRUser . |