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

اگر فراخوان تکمیل در متدهای Authentication آرگومان NSError را دریافت کند که صفر نیست، خطایی رخ داده است. برای ارسال به منطق مناسب رسیدگی به خطا در کد تولید خود، کد خطا را در برابر خطاهای رایج و خطاهای خاص روش فهرست شده در زیر بررسی کنید.

برخی از خطاها را می توان با اقدامات کاربر خاص حل کرد، به عنوان مثال، FIRAuthErrorCodeUserTokenExpired را می توان با ورود مجدد کاربر به سیستم، و FIRAuthErrorCodeWrongPassword را با درخواست از کاربر برای ارائه رمز عبور درست حل کرد.

به جز در مورد FIRAuthErrorCodeNetworkError یا FIRAuthErrorCodeTooManyRequests ، تلاش مجدد یک عملیات ناموفق با همان آرگومان ها هرگز موفق نخواهد بود. هیچ فرضی مبنی بر اینکه آیا این عملیات روی سمت سرور اثر گذاشته است یا خیر.

هنگام بررسی یا ثبت خطاها، فرهنگ لغت userInfo را مرور کنید. FIRAuthErrorNameKey حاوی یک رشته نام خطای چند پلتفرمی است که می تواند برای شناسایی خطا استفاده شود. NSLocalizedDescriptionKey حاوی شرحی از خطا است. این توضیحات برای توسعه دهنده است، نه کاربر. NSUnderlyingErrorKey حاوی خطای اساسی است که باعث خطای مورد نظر شده است، اگر یک خطای اساسی وجود داشته باشد.

علاوه بر فیلدهای اصلی فهرست شده در بالا، فیلدهای دیگری نیز در فرهنگ لغت userInfo وجود دارد که ممکن است در هنگام تشخیص خطاها مفید باشند.

کدهای خطا مشترک در همه روش های API

کد معنی
FIRAuthErrorCodeNetworkError نشان می دهد که یک خطای شبکه در طول عملیات رخ داده است.
FIRAuthErrorCodeUserNotFound نشان می دهد که حساب کاربری پیدا نشد. اگر حساب کاربری حذف شده باشد ممکن است این اتفاق بیفتد.
FIRAuthErrorCodeUserTokenExpired نشان می دهد که رمز کاربر فعلی منقضی شده است، به عنوان مثال، کاربر ممکن است رمز عبور حساب را در دستگاه دیگری تغییر داده باشد. باید از کاربر بخواهید دوباره در این دستگاه وارد سیستم شود.
FIRAuthErrorCodeTooManyRequests نشان می دهد که پس از ارسال تعداد غیرعادی درخواست از دستگاه تماس گیرنده به سرورهای Firebase Authentication، درخواست مسدود شده است. بعد از مدتی دوباره سعی کنید.
FIRAuthErrorCodeInvalidAPIKey نشان می دهد که برنامه با یک کلید API نامعتبر پیکربندی شده است.
FIRAuthErrorCodeAppNotAuthorized نشان می دهد که برنامه مجاز به استفاده از احراز هویت Firebase با کلید API ارائه شده نیست. به کنسول API Google بروید و در زیر برگه اعتبارنامه ها بررسی کنید که کلید API مورد استفاده شما دارای شناسه بسته نرم افزاری شما در لیست سفید باشد.
FIRAuthErrorCodeKeychainError نشان می دهد که هنگام دسترسی به دسته کلید خطایی رخ داده است. فیلدهای NSLocalizedFailureReasonErrorKey و NSUnderlyingErrorKey در فرهنگ لغت NSError.userInfo حاوی اطلاعات بیشتری درباره خطای رخ داده خواهد بود.
FIRAuthErrorCodeInternalError نشان دهنده یک خطای داخلی است. لطفاً خطا را با کل شیء NSError گزارش دهید.

کدهای خطای خاص روش

FIRAuth

fetchProvidersForEmail:completion:

کد معنی
FIRAuthErrorCodeInvalidEmail نشان می دهد که آدرس ایمیل نادرست است.

signInWithEmail:password:completion:

کد معنی
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:password:completion:

کد معنی
FIRAuthErrorCodeInvalidEmail نشان می دهد که آدرس ایمیل نادرست است.
FIRAuthErrorCodeEmailAlreadyInUse نشان می دهد ایمیل استفاده شده برای ثبت نام از قبل وجود دارد. با fetchProvidersForEmail تماس بگیرید تا بررسی کنید که این کاربر از کدام مکانیسم‌های ورود استفاده می‌کند و از کاربر بخواهید با یکی از آن‌ها وارد سیستم شود.
FIRAuthErrorCodeOperationNotAllowed نشان می دهد که حساب های ایمیل و رمز عبور فعال نیستند. آنها را در بخش Authentication کنسول 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 کاربر را دوباره احراز هویت کنید.