اگر فراخوان تکمیل در متدهای Authentication آرگومان NSError
را دریافت کند که صفر نیست، خطایی رخ داده است. برای ارسال به منطق مناسب رسیدگی به خطا در کد تولید خود، کد خطا را در برابر خطاهای رایج و خطاهای خاص روش فهرست شده در زیر بررسی کنید.
برخی از خطاها را می توان با اقدامات خاص کاربر برطرف کرد، برای مثال، FIRAuthErrorCodeUserTokenExpired
را می توان با ورود مجدد کاربر به سیستم حل کرد، و FIRAuthErrorCodeWrongPassword
را با درخواست از کاربر برای ارائه رمز عبور درست حل کرد.
به جز در مورد FIRAuthErrorCodeNetworkError
یا FIRAuthErrorCodeTooManyRequests
، تلاش مجدد یک عملیات ناموفق با همان آرگومان ها هرگز موفق نخواهد شد. هیچ فرضی مبنی بر اینکه آیا این عملیات در سمت سرور تأثیر گذاشته است یا خیر.
هنگام بررسی یا ثبت خطاها، فرهنگ لغت userInfo
را مرور کنید. FIRAuthErrorNameKey
حاوی یک رشته نام خطای چند پلتفرمی است که می تواند برای شناسایی خطا استفاده شود. NSLocalizedDescriptionKey
حاوی شرحی از خطا است. این توضیحات برای توسعه دهنده است، نه کاربر. NSUnderlyingErrorKey
حاوی خطای اساسی است که باعث خطای مورد نظر شده است، اگر یک خطای اساسی وجود داشته باشد.
علاوه بر فیلدهای اصلی فهرست شده در بالا، فیلدهای دیگری نیز در فرهنگ لغت userInfo
وجود دارد که ممکن است هنگام تشخیص خطاها مفید باشند.
کدهای خطا مشترک در همه روش های API
کد | معنی |
---|
FIRAuthErrorCodeNetworkError | نشان می دهد که یک خطای شبکه در طول عملیات رخ داده است. |
FIRAuthErrorCodeUserNotFound | نشان می دهد که حساب کاربری پیدا نشد. اگر حساب کاربری حذف شده باشد ممکن است این اتفاق بیفتد. |
FIRAuthErrorCodeUserTokenExpired | نشان می دهد که رمز کاربر فعلی منقضی شده است، به عنوان مثال، کاربر ممکن است رمز عبور حساب را در دستگاه دیگری تغییر داده باشد. باید از کاربر بخواهید دوباره در این دستگاه وارد سیستم شود. |
FIRAuthErrorCodeTooManyRequests | نشان می دهد که درخواست پس از ارسال تعداد غیرعادی درخواست از دستگاه تماس گیرنده به سرورهای Firebase Authentication مسدود شده است. بعد از مدتی دوباره سعی کنید. |
FIRAuthErrorCodeInvalidAPIKey | نشان می دهد که برنامه با یک کلید API نامعتبر پیکربندی شده است. |
FIRAuthErrorCodeAppNotAuthorized | نشان می دهد که برنامه مجاز به استفاده از احراز هویت Firebase با کلید API ارائه شده نیست. به Google API Console بروید و در زیر برگه اعتبارنامه ها بررسی کنید که کلید 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 ، کاربر را دوباره احراز هویت کنید. |