לטפל בשגיאות האימות של Firebase iOS

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

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

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

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

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

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

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

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

FIRAuth

fetchProvidersForEmail: השלמה:

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

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

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

signInWithCredential: השלמה:

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

כניסה באופן אנונימי עם השלמה:

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

signInWithCustomToken: השלמה:

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

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

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

התנתק:

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

FIRUser

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

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

אימות מחדשWithCredential: השלמה:

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

updateEmail: השלמה:

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

updatePassword: השלמה:

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

linkWithCredential: השלמה:

קוד מַשְׁמָעוּת
FIRAuthErrorCodeProviderAlreadyLinked מציין ניסיון לקשר בין ספק שכבר מקושר לחשבון זה.
FIRAuthErrorCodeCredentialAlreadyInUse מציין ניסיון לקשר עם אישורים שכבר קושרו לחשבון Firebase אחר.
FIRAuthErrorCodeOperationNotAllowed מציין כי חשבונות עם ספק הזהות המיוצג על ידי האישור אינם מופעלים. אפשר אותם בקטע המחבר של קונסולת Firebase .

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

unlinkFromProvider: השלמה:

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

sendEmailVerificationWithCompletion:

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

deleteWithCompletion:

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