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