اگر فراخوانی تکمیل در متدهای Authentication ، آرگومان NSError غیر nil دریافت کند، خطایی رخ داده است. برای ارسال به منطق مدیریت خطای مناسب در کد تولید خود، کد خطا را با خطاهای رایج و خطاهای خاص متد ذکر شده در زیر بررسی کنید.
برخی از خطاها را میتوان با اقدامات خاص کاربر برطرف کرد، برای مثال، FIRAuthErrorCodeUserTokenExpired میتوان با ورود مجدد کاربر و FIRAuthErrorCodeWrongPassword میتوان با درخواست رمز عبور صحیح از کاربر برطرف کرد.
به جز در مواردی که خطای FIRAuthErrorCodeNetworkError یا FIRAuthErrorCodeTooManyRequests رخ میدهد، تلاش مجدد برای اجرای یک عملیات ناموفق با همان آرگومانها هرگز موفقیتآمیز نخواهد بود. هیچ فرضی در مورد اینکه آیا عملیات در سمت سرور اعمال شده است یا خیر، نداشته باشید.
هنگام بررسی یا ثبت خطاها، دیکشنری userInfo را بررسی کنید. FIRAuthErrorNameKey حاوی یک رشته نام خطای چند پلتفرمی است که میتواند برای شناسایی خطا استفاده شود. NSLocalizedDescriptionKey حاوی توضیحی از خطا است. این توضیح برای توسعهدهنده در نظر گرفته شده است، نه کاربر. NSUnderlyingErrorKey شامل خطای اصلی است که باعث ایجاد خطای مورد نظر شده است، البته اگر خطای اصلی وجود داشته باشد.
علاوه بر فیلدهای اصلی ذکر شده در بالا، فیلدهای دیگری نیز میتوانند در دیکشنری userInfo وجود داشته باشند که ممکن است هنگام تشخیص خطاها مفید باشند.
کدهای خطای رایج در همه متدهای API
| کد | معنی |
|---|
FIRAuthErrorCodeNetworkError | نشان میدهد که در حین عملیات، خطای شبکه رخ داده است. |
FIRAuthErrorCodeUserNotFound | نشان میدهد که حساب کاربری پیدا نشد. این اتفاق ممکن است در صورت حذف حساب کاربری رخ دهد. |
FIRAuthErrorCodeUserTokenExpired | نشان میدهد که توکن کاربر فعلی منقضی شده است، برای مثال، ممکن است کاربر رمز عبور حساب را در دستگاه دیگری تغییر داده باشد. شما باید از کاربر بخواهید که دوباره در این دستگاه وارد سیستم شود. |
FIRAuthErrorCodeTooManyRequests | نشان میدهد که درخواست پس از ارسال تعداد غیرعادی درخواست از دستگاه تماسگیرنده به سرورهای Firebase Authentication مسدود شده است. پس از مدتی دوباره امتحان کنید. |
FIRAuthErrorCodeInvalidAPIKey | نشان میدهد که برنامه با یک کلید API نامعتبر پیکربندی شده است. |
FIRAuthErrorCodeAppNotAuthorized | نشان میدهد که برنامه مجاز به استفاده از احراز هویت Firebase با کلید API ارائه شده نیست. به کنسول API گوگل بروید و در زیر تب اعتبارنامهها بررسی کنید که کلید API که استفاده میکنید، شناسه بسته برنامه شما در لیست سفید باشد. |
FIRAuthErrorCodeKeychainError | نشان دهندهی خطایی است که هنگام دسترسی به keychain رخ داده است. فیلدهای NSLocalizedFailureReasonErrorKey و NSUnderlyingErrorKey در دیکشنری NSError.userInfo حاوی اطلاعات بیشتری در مورد خطای رخ داده خواهند بود. |
FIRAuthErrorCodeInternalError | نشان دهندهی وقوع یک خطای داخلی است. لطفاً خطا را به همراه کل شیء NSError گزارش دهید. |
کدهای خطای خاص روش
FIRAuth
تکمیل fetchProvidersForEmail:
| کد | معنی |
|---|
FIRAuthErrorCodeInvalidEmail | نشان میدهد که آدرس ایمیل ناقص است. |
signInWithEmail:password:completion:
| کد | معنی |
|---|
FIRAuthErrorCodeOperationNotAllowed | نشان میدهد که حسابهای ایمیل و رمز عبور فعال نیستند. آنها را در کنسول Firebase فعال کنید (به برگه Security > Authentication > Sign-in method بروید). |
FIRAuthErrorCodeInvalidEmail | نشان میدهد که آدرس ایمیل ناقص است. |
FIRAuthErrorCodeUserDisabled | نشان میدهد که حساب کاربری غیرفعال است. |
FIRAuthErrorCodeWrongPassword | نشان میدهد که کاربر با رمز عبور اشتباه سعی در ورود به سیستم داشته است. |
signInWithCredential: تکمیل:
| کد | معنی |
|---|
FIRAuthErrorCodeInvalidCredential | نشان میدهد که اعتبارنامه ارائه شده نامعتبر است. این اتفاق میتواند در صورت منقضی شدن یا ناقص بودن آن رخ دهد. |
FIRAuthErrorCodeInvalidEmail | اگر اعتبارنامه از نوع EmailPasswordAuthCredential باشد، نشان میدهد که آدرس ایمیل ناقص است. |
FIRAuthErrorCodeOperationNotAllowed | نشان میدهد که حسابهای کاربری با ارائهدهنده هویتی که با اعتبارنامه نمایش داده میشود، فعال نیستند. آنها را در کنسول Firebase فعال کنید (به برگه Security > Authentication > Sign-in method بروید). |
FIRAuthErrorCodeEmailAlreadyInUse | نشان میدهد که ایمیلی که توسط اعتبارنامه (مثلاً ایمیل موجود در یک توکن دسترسی فیسبوک) ادعا شده است، در حال حاضر توسط یک حساب کاربری موجود در حال استفاده است که نمیتوان آن را با این روش ورود به سیستم تأیید کرد. برای ایمیل این کاربر، تابع fetchProvidersForEmail را فراخوانی کنید و سپس از او بخواهید که با هر یک از ارائهدهندگان ورود به سیستم که برگردانده شده است، وارد سیستم شود. این خطا فقط در صورتی نمایش داده میشود که "یک حساب کاربری برای هر آدرس ایمیل" در کنسول Firebase فعال شده باشد (به برگه Security > Authentication > Settings بروید). |
FIRAuthErrorCodeUserDisabled | نشان میدهد که حساب کاربری غیرفعال است. |
FIRAuthErrorCodeWrongPassword | اگر اعتبارنامه از نوع EmailPasswordAuthCredential باشد، نشان میدهد که کاربر با رمز عبور اشتباه سعی در ورود به سیستم داشته است. |
ورود به سیستم ناشناس با تکمیل:
| کد | معنی |
|---|
FIRAuthErrorCodeOperationNotAllowed | نشان میدهد که حسابهای کاربری ناشناس فعال نیستند. آنها را در کنسول Firebase فعال کنید (به برگه Security > Authentication > Sign-in method بروید). |
تکمیل signInWithCustomToken:
| کد | معنی |
|---|
FIRAuthErrorCodeInvalidCustomToken | خطای اعتبارسنجی با توکن سفارشی را نشان میدهد. |
FIRAuthErrorCodeCustomTokenMismatch | نشان میدهد که حساب کاربری سرویس و کلید API متعلق به پروژههای مختلف هستند. |
تکمیل: createUserWithEmail:password:
| کد | معنی |
|---|
FIRAuthErrorCodeInvalidEmail | نشان میدهد که آدرس ایمیل ناقص است. |
FIRAuthErrorCodeEmailAlreadyInUse | نشان میدهد ایمیلی که برای تلاش برای ثبت نام استفاده شده است، از قبل وجود دارد. تابع fetchProvidersForEmail را فراخوانی کنید تا بررسی کنید که چنین کاربری از کدام مکانیسمهای ورود به سیستم استفاده کرده است و از کاربر بخواهید با یکی از آنها وارد سیستم شود. |
FIRAuthErrorCodeOperationNotAllowed | نشان میدهد که حسابهای ایمیل و رمز عبور فعال نیستند. آنها را در کنسول Firebase فعال کنید (به برگه Security > Authentication > Sign-in method بروید). |
FIRAuthErrorCodeWeakPassword | نشان دهنده تلاشی برای تنظیم رمز عبوری است که بسیار ضعیف تلقی میشود. فیلد NSLocalizedFailureReasonErrorKey در شیء دیکشنری NSError.userInfo شامل توضیحات دقیقتری است که میتواند به کاربر نشان داده شود. |
خروج از سیستم:
| کد | معنی |
|---|
FIRAuthErrorCodeKeychainError | نشان دهندهی خطایی است که هنگام دسترسی به keychain رخ داده است. فیلدهای NSLocalizedFailureReasonErrorKey و NSUnderlyingErrorKey در دیکشنری NSError.userInfo حاوی اطلاعات بیشتری در مورد خطای رخ داده خواهند بود. |
FIRUser
خطاهای رایج در عملیات FIRUser
| کد | معنی |
|---|
FIRAuthErrorCodeInvalidUserToken | نشان میدهد که توکن بهروزرسانی کاربر وارد شده که اطلاعات جلسه را در خود نگه میدارد، نامعتبر است. شما باید از کاربر بخواهید دوباره در این دستگاه وارد سیستم شود. |
FIRAuthErrorCodeUserDisabled | نشان میدهد که حساب کاربری غیرفعال شده است و دیگر نمیتوان از آن استفاده کرد تا زمانی که دوباره در کنسول Firebase فعال شود (به برگه Security > Authentication > Users بروید). |
تکمیل احراز هویت مجدد با اعتبارنامه:
| کد | معنی |
|---|
FIRAuthErrorCodeInvalidCredential | نشان میدهد که اعتبارنامه ارائه شده نامعتبر است. این اتفاق میتواند در صورت منقضی شدن یا ناقص بودن آن رخ دهد. |
FIRAuthErrorCodeInvalidEmail | اگر اعتبارنامه از نوع EmailPasswordAuthCredential باشد، نشان میدهد که آدرس ایمیل ناقص است. |
FIRAuthErrorCodeWrongPassword | اگر اعتبارنامه از نوع EmailPasswordAuthCredential باشد، نشان میدهد که کاربر با رمز عبور نادرست اقدام به احراز هویت مجدد کرده است. |
FIRAuthErrorCodeUserMismatch | نشان میدهد که تلاشی برای احراز هویت مجدد با کاربری غیر از کاربر فعلی انجام شده است. |
FIRAuthErrorCodeOperationNotAllowed | نشان میدهد که حسابهای کاربری با ارائهدهنده هویتی که با اعتبارنامه نمایش داده میشود، فعال نیستند. آنها را در کنسول Firebase فعال کنید (به Security > Authentication بروید). |
FIRAuthErrorCodeEmailAlreadyInUse | نشان میدهد که ایمیلی که توسط اعتبارنامه (مثلاً ایمیل موجود در توکن دسترسی فیسبوک) ادعا شده است، در حال حاضر توسط یک حساب کاربری موجود در حال استفاده است که نمیتوان آن را با این روش ورود به سیستم مجدداً تأیید اعتبار کرد. برای ایمیل این کاربر، تابع fetchProvidersForEmail را فراخوانی کنید و سپس از او بخواهید که با هر یک از ارائهدهندگان ورود به سیستم که برگردانده شده است، وارد سیستم شود. این خطا فقط در صورتی نمایش داده میشود که "یک حساب کاربری برای هر آدرس ایمیل" در کنسول Firebase فعال شده باشد (به برگه Security > Authentication > Settings بروید). |
FIRAuthErrorCodeUserDisabled | نشان میدهد که حساب کاربری غیرفعال است. |
updateEmail: تکمیل:
| کد | معنی |
|---|
FIRAuthErrorCodeEmailAlreadyInUse | نشان میدهد که ایمیل قبلاً توسط یک حساب کاربری دیگر در حال استفاده است. |
FIRAuthErrorCodeInvalidEmail | نشان میدهد که آدرس ایمیل ناقص است. |
FIRAuthErrorCodeRequiresRecentLogin | بهروزرسانی ایمیل کاربر یک عملیات حساس امنیتی است که نیاز به ورود اخیر کاربر دارد. این خطا نشان میدهد که کاربر به تازگی وارد سیستم نشده است. برای رفع این مشکل، با فراخوانی reauthenticateWithCredential:completion: در FIRUser ، کاربر را مجدداً احراز هویت کنید. |
updatePassword: تکمیل:
| کد | معنی |
|---|
FIRAuthErrorCodeOperationNotAllowed | نشان میدهد که مدیر سیستم، ورود به سیستم با ارائهدهنده هویت مشخصشده را غیرفعال کرده است. |
FIRAuthErrorCodeRequiresRecentLogin | بهروزرسانی رمز عبور کاربر یک عملیات حساس امنیتی است که نیاز به ورود اخیر کاربر دارد. این خطا نشان میدهد که کاربر به تازگی وارد سیستم نشده است. برای رفع این مشکل، با فراخوانی reauthenticateWithCredential:completion: در FIRUser ، کاربر را مجدداً احراز هویت کنید. |
FIRAuthErrorCodeWeakPassword | نشان دهنده تلاشی برای تنظیم رمز عبوری است که بسیار ضعیف تلقی میشود. فیلد NSLocalizedFailureReasonErrorKey در شیء دیکشنری NSError.userInfo شامل توضیحات دقیقتری است که میتواند به کاربر نشان داده شود. |
linkWithCredential:تکمیل:
| کد | معنی |
|---|
FIRAuthErrorCodeProviderAlreadyLinked | نشان دهنده تلاشی برای پیوند دادن ارائه دهنده ای از نوعی است که قبلاً به این حساب مرتبط شده است. |
FIRAuthErrorCodeCredentialAlreadyInUse | نشان دهنده تلاشی برای پیوند با اعتبارنامهای است که قبلاً با یک حساب Firebase متفاوت مرتبط شده است. |
FIRAuthErrorCodeOperationNotAllowed | نشان میدهد که حسابهای کاربری با ارائهدهنده هویتی که با اعتبارنامه نمایش داده میشود، فعال نیستند. آنها را در کنسول Firebase فعال کنید (به برگه Security > Authentication > Sign-in method بروید). |
این متد همچنین ممکن است کدهای خطای مرتبط با updateEmail:completion: و updatePassword:completion: در FIRUser را برگرداند.
لغو پیوند از ارائه دهنده: تکمیل:
| کد | معنی |
|---|
FIRAuthErrorCodeNoSuchProvider | نشان دهنده تلاشی برای قطع ارتباط با ارائه دهنده ای است که به حساب متصل نیست. |
FIRAuthErrorCodeRequiresRecentLogin | بهروزرسانی ایمیل یک عملیات حساس امنیتی است که نیاز به ورود اخیر کاربر دارد. این خطا نشان میدهد که کاربر به تازگی وارد سیستم نشده است. برای رفع این مشکل، با فراخوانی reauthenticateWithCredential:completion: در FIRUser ، کاربر را مجدداً احراز هویت کنید. |
ارسال ایمیلتایید با تکمیل:
| کد | معنی |
|---|
FIRAuthErrorCodeUserNotFound | نشان میدهد که حساب کاربری پیدا نشد. |
حذف با تکمیل:
| کد | معنی |
|---|
FIRAuthErrorCodeRequiresRecentLogin | حذف یک حساب کاربری یک عملیات حساس امنیتی است که نیاز به ورود اخیر کاربر دارد. این خطا نشان میدهد که کاربر به تازگی وارد سیستم نشده است. برای حل این مشکل، با فراخوانی reauthenticateWithCredential:completion: در FIRUser ، کاربر را مجدداً احراز هویت کنید. |