טיפול בשגיאות אימות של Firebase Apple Platforms

אם החזרת ההשלמה על שיטות אימות מקבלת ארגומנט NSError שאינו אפס, אירעה שגיאה. כדי לשלוח ללוגיקה מתאימה לטיפול בשגיאות בקוד הייצור שלך, בדוק את קוד השגיאה מול שגיאות נפוצות ושגיאות ספציפיות לשיטה המפורטות להלן.

ניתן לפתור שגיאות מסוימות על ידי פעולות משתמש מסוימות, לדוגמה, ניתן לפתור FIRAuthErrorCodeUserTokenExpired על ידי כניסה שוב למשתמש ו- FIRAuthErrorCodeWrongPassword על ידי בקשה מהמשתמש לספק את הסיסמה הנכונה.

למעט במקרה של FIRAuthErrorCodeNetworkError או FIRAuthErrorCodeTooManyRequests , ניסיון חוזר לפעולה נכשלת עם אותם ארגומנטים לעולם לא יצליח. אל תניח הנחה אם הפעולה נכנסה לתוקף בצד השרת או לא.

בעת חקירה או רישום שגיאות, עיין במילון userInfo . FIRAuthErrorNameKey מכיל מחרוזת שם שגיאה בין פלטפורמות שניתן להשתמש בה לזיהוי השגיאה. NSLocalizedDescriptionKey מכיל תיאור של השגיאה. תיאור זה מיועד למפתח, לא למשתמש. NSUnderlyingErrorKey מכיל את השגיאה הבסיסית שגרמה לשגיאה המדוברת, אם קיימת שגיאה בסיסית.

בנוסף לשדות העיקריים המפורטים לעיל, יכולים להיות שדות נוספים במילון userInfo שעשויים להיות שימושיים בעת אבחון שגיאות.

קודי שגיאה משותפים לכל שיטות ה-API

קוד מַשְׁמָעוּת
FIRAuthErrorCodeNetworkError מציין שאירעה שגיאת רשת במהלך הפעולה.
FIRAuthErrorCodeUserNotFound מציין שחשבון המשתמש לא נמצא. זה יכול לקרות אם חשבון המשתמש נמחק.
FIRAuthErrorCodeUserTokenExpired מציין שפג תוקפו של האסימון של המשתמש הנוכחי, לדוגמה, ייתכן שהמשתמש שינה את סיסמת החשבון במכשיר אחר. עליך לבקש מהמשתמש להיכנס שוב במכשיר זה.
FIRAuthErrorCodeTooManyRequests מציין שהבקשה נחסמה לאחר שבוצע מספר חריג של בקשות מהמכשיר המתקשר לשרתי האימות של Firebase. נסה שוב לאחר זמן מה.
FIRAuthErrorCodeInvalidAPIKey מציין שהאפליקציה הוגדרה עם מפתח API לא חוקי.
FIRAuthErrorCodeAppNotAuthorized מציין שהאפליקציה אינה מורשית להשתמש באימות Firebase עם מפתח ה-API שסופק. עבור אל Google API Console ובדוק תחת כרטיסיית האישורים שלמפתח ה-API שבו אתה משתמש יש את מזהה החבילה של היישום שלך ברשימת ההיתרים.
FIRAuthErrorCodeKeychainError מציין שאירעה שגיאה בעת הגישה למחזיק המפתחות. השדות NSLocalizedFailureReasonErrorKey ו- NSUnderlyingErrorKey במילון NSError.userInfo יכילו מידע נוסף על השגיאה שנתקלתה.
FIRAuthErrorCodeInternalError מציין שאירעה שגיאה פנימית. אנא דווח על השגיאה עם כל אובייקט NSError .

קודי שגיאה ספציפיים לשיטה

FIRAuth

fetchProvidersForEmail:completion:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeInvalidEmail מציין שכתובת האימייל שגויה.

signInWithEmail:סיסמה:השלמה:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeOperationNotAllowed מציין שחשבונות דואר אלקטרוני וסיסמא אינם מופעלים. הפעל אותם בקטע Auth של מסוף Firebase .
FIRAuthErrorCodeInvalidEmail מציין שכתובת האימייל שגויה.
FIRAuthErrorCodeUserDisabled מציין שחשבון המשתמש מושבת.
FIRAuthErrorCodeWrongPassword מציין שהמשתמש ניסה להיכנס עם סיסמה שגויה.

signInWithCredential:completion:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeInvalidCredential מציין שהאישור שסופק אינו חוקי. זה יכול לקרות אם פג תוקפו או שהוא פגום.
FIRAuthErrorCodeInvalidEmail מציין שכתובת האימייל שגויה, אם האישור הוא מהסוג EmailPasswordAuthCredential .
FIRAuthErrorCodeOperationNotAllowed מציין שחשבונות עם ספק הזהות המיוצגים על ידי האישור אינם מופעלים. הפעל אותם בקטע Auth של מסוף Firebase .
FIRAuthErrorCodeEmailAlreadyInUse מציין שהדוא"ל שנטען על ידי האישור (למשל, האימייל באסימון גישה לפייסבוק) כבר נמצא בשימוש על ידי חשבון קיים, שלא ניתן לאמת אותו בשיטת הכניסה הזו. התקשר ל- fetchProvidersForEmail עבור האימייל של משתמש זה ולאחר מכן הנחה אותו להיכנס עם כל אחד מספקי הכניסה שהוחזרו. שגיאה זו תופיע רק אם ההגדרה "חשבון אחד לכל כתובת אימייל" מופעלת במסוף Firebase , תחת הגדרות אימות.
FIRAuthErrorCodeUserDisabled מציין שחשבון המשתמש מושבת.
FIRAuthErrorCodeWrongPassword מציין שהמשתמש ניסה להיכנס עם סיסמה שגויה, אם האישור הוא מהסוג EmailPasswordAuthCredential .

SignInAnonymouslyWithCompletion:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeOperationNotAllowed מציין שחשבונות אנונימיים אינם מופעלים. הפעל אותם בקטע Auth של מסוף Firebase .

signInWithCustomToken:completion:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeInvalidCustomToken מציין שגיאת אימות עם האסימון המותאם אישית.
FIRAuthErrorCodeCustomTokenMismatch מציין שחשבון השירות ומפתח ה-API שייכים לפרויקטים שונים.

createUserWithEmail:סיסמה:השלמה:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeInvalidEmail מציין שכתובת האימייל שגויה.
FIRAuthErrorCodeEmailAlreadyInUse מציין שהדוא"ל ששימש לניסיון ההרשמה כבר קיים. התקשר ל- fetchProvidersForEmail כדי לבדוק באילו מנגנוני כניסה משתמש כזה השתמש, ובקש מהמשתמש להיכנס עם אחד מאלה.
FIRAuthErrorCodeOperationNotAllowed מציין שחשבונות דואר אלקטרוני וסיסמא אינם מופעלים. הפעל אותם בקטע אימות של מסוף Firebase .
FIRAuthErrorCodeWeakPassword מציין ניסיון להגדיר סיסמה שנחשבת חלשה מדי. השדה NSLocalizedFailureReasonErrorKey באובייקט המילון NSError.userInfo יכיל הסבר מפורט יותר שניתן להציג למשתמש.

התנתק:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeKeychainError ציינה שאירעה שגיאה בעת הגישה למחזיק המפתחות. השדות NSLocalizedFailureReasonErrorKey ו- NSUnderlyingErrorKey במילון NSError.userInfo יכילו מידע נוסף על השגיאה שנתקלתה.

FIRUser

שגיאות נפוצות עבור פעולות FIRUser

קוד מַשְׁמָעוּת
FIRAuthErrorCodeInvalidUserToken מציין שאסימון הרענון של המשתמש המחובר, שמכיל מידע על הפעלה, אינו חוקי. עליך לבקש מהמשתמש להיכנס שוב במכשיר זה.
FIRAuthErrorCodeUserDisabled מציין שחשבון המשתמש מושבת ולא ניתן עוד להשתמש בו עד שיופעל שוב מתוך חלונית המשתמשים במסוף Firebase.

reauthenticateWithCredential:completion:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeInvalidCredential מציין שהאישור שסופק אינו חוקי. זה יכול לקרות אם פג תוקפו או שהוא פגום.
FIRAuthErrorCodeInvalidEmail מציין שכתובת האימייל שגויה, אם האישור הוא מהסוג EmailPasswordAuthCredential .
FIRAuthErrorCodeWrongPassword מציין שהמשתמש ניסה לאמת מחדש עם סיסמה שגויה, אם האישור הוא מהסוג EmailPasswordAuthCredential .
FIRAuthErrorCodeUserMismatch מציין שנעשה ניסיון לאימות מחדש עם משתמש שאינו המשתמש הנוכחי.
FIRAuthErrorCodeOperationNotAllowed מציין שחשבונות עם ספק הזהות המיוצגים על ידי האישור אינם מופעלים. הפעל אותם בקטע Auth של מסוף Firebase .
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 מציין שחשבונות עם ספק הזהות המיוצגים על ידי האישור אינם מופעלים. הפעל אותם בקטע Auth של מסוף Firebase .

שיטה זו עשויה גם להחזיר קודי שגיאה המשויכים updateEmail:completion: updatePassword:completion: ב- FIRUser .

unlinkFromProvider:completion:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeNoSuchProvider מציין ניסיון לבטל קישור של ספק שאינו מקושר לחשבון.
FIRAuthErrorCodeRequiresRecentLogin עדכון דוא"ל הוא פעולה רגישה לאבטחה הדורשת התחברות עדכנית מהמשתמש. שגיאה זו מציינת שהמשתמש לא נכנס מספיק לאחרונה. כדי לפתור את הבעיה, אימות מחדש את המשתמש על ידי הפעלת reauthenticateWithCredential:completion: ב- FIRUser .

sendEmailVerificationWithCompletion:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeUserNotFound מציין שחשבון המשתמש לא נמצא.

deleteWithCompletion:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeRequiresRecentLogin מחיקת חשבון משתמש היא פעולה רגישה לאבטחה הדורשת התחברות עדכנית מהמשתמש. שגיאה זו מציינת שהמשתמש לא נכנס מספיק לאחרונה. כדי לפתור את הבעיה, אימות מחדש את המשתמש על ידי הפעלת reauthenticateWithCredential:completion: ב- FIRUser .