رفع خطاهای Firebase Apple Platforms Auth

اگر فراخوانی تکمیل در متدهای 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 ، کاربر را مجدداً احراز هویت کنید.