التعامل مع أخطاء مصادقة منصات Firebase Apple

إذا تلقّت دالة معاودة الاتصال الخاصة بالإكمال في طرق Authentication الوسيطة NSError غير فارغة، يعني ذلك حدوث خطأ. لإرسال الخطأ إلى منطق معالجة الأخطاء المناسب في رمز الإنتاج، تحقَّق من رمز الخطأ مقارنةً بالأخطاء الشائعة والأخطاء الخاصة بالطريقة المدرَجة أدناه.

يمكن حلّ بعض الأخطاء من خلال إجراءات معيّنة يتّخذها المستخدم، على سبيل المثال، يمكن حلّ الخطأ FIRAuthErrorCodeUserTokenExpired من خلال تسجيل دخول المستخدم مرة أخرى، وحلّ الخطأ FIRAuthErrorCodeWrongPassword من خلال مطالبة المستخدم بتقديم كلمة المرور الصحيحة.

باستثناء حالة FIRAuthErrorCodeNetworkError أو FIRAuthErrorCodeTooManyRequests، لن تنجح أبدًا إعادة محاولة تنفيذ عملية فاشلة باستخدام الوسيطات نفسها. لا تفترض ما إذا كانت العملية قد تم تنفيذها على مستوى الخادم أم لا.

عند التحقيق في الأخطاء أو تسجيلها، راجِع قاموس userInfo. يحتوي FIRAuthErrorNameKey على سلسلة اسم خطأ متوافق مع عدة منصات يمكن استخدامها لتحديد الخطأ. يتضمّن NSLocalizedDescriptionKey وصفًا للخطأ. هذا الوصف مخصّص للمطوّر وليس للمستخدم. يمثّل NSUnderlyingErrorKey الخطأ الأساسي الذي تسبّب في حدوث الخطأ المعنيّ، إذا كان هناك خطأ أساسي.

بالإضافة إلى الحقول الرئيسية المذكورة أعلاه، يمكن أن تتضمّن قاموس userInfo حقولاً أخرى قد تكون مفيدة عند تشخيص الأخطاء.

رموز الخطأ الشائعة في جميع طرق واجهة برمجة التطبيقات

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeNetworkError يشير إلى حدوث خطأ في الشبكة أثناء العملية.
FIRAuthErrorCodeUserNotFound تشير إلى أنّه لم يتم العثور على حساب المستخدم. قد يحدث ذلك إذا تم حذف حساب المستخدم.
FIRAuthErrorCodeUserTokenExpired تشير إلى أنّ الرمز المميّز للمستخدم الحالي قد انتهت صلاحيته، على سبيل المثال، ربما غيّر المستخدم كلمة مرور الحساب على جهاز آخر. عليك أن تطلب من المستخدم تسجيل الدخول مرة أخرى على هذا الجهاز.
FIRAuthErrorCodeTooManyRequests تشير إلى أنّه تم حظر الطلب بعد تقديم عدد غير طبيعي من الطلبات من جهاز المتصل إلى خوادم Firebase Authentication. يُرجى إعادة المحاولة بعد مرور بعض الوقت.
FIRAuthErrorCodeInvalidAPIKey تشير إلى أنّه تم إعداد التطبيق باستخدام مفتاح غير صالح لواجهة برمجة التطبيقات.
FIRAuthErrorCodeAppNotAuthorized يشير إلى أنّ التطبيق غير مصرّح له باستخدام مصادقة Firebase مع مفتاح واجهة برمجة التطبيقات المقدَّم. انتقِل إلى Google API Console وتأكَّد من أنّ معرّف حزمة تطبيقك مُدرَج في القائمة البيضاء ضمن علامة التبويب "بيانات الاعتماد" لمفتاح واجهة برمجة التطبيقات الذي تستخدمه.
FIRAuthErrorCodeKeychainError يشير إلى حدوث خطأ أثناء الوصول إلى سلسلة المفاتيح. سيتضمّن الحقلان NSLocalizedFailureReasonErrorKey وNSUnderlyingErrorKey في قاموس NSError.userInfo مزيدًا من المعلومات حول الخطأ الذي حدث.
FIRAuthErrorCodeInternalError يشير إلى حدوث خطأ داخلي. يُرجى الإبلاغ عن الخطأ مع كائن NSError بأكمله.

رموز الخطأ الخاصة بالطريقة

FIRAuth

fetchProvidersForEmail:completion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeInvalidEmail يشير إلى أنّ عنوان البريد الإلكتروني مكتوب بشكل غير صحيح.

signInWithEmail:password:completion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeOperationNotAllowed يشير إلى أنّه لم يتم تفعيل حسابات البريد الإلكتروني وكلمة المرور. يمكنك تفعيلها في وحدة تحكّم Firebase (انتقِل إلى علامة التبويب الأمان > المصادقة > طريقة تسجيل الدخول).
FIRAuthErrorCodeInvalidEmail يشير إلى أنّ عنوان البريد الإلكتروني مكتوب بشكل غير صحيح.
FIRAuthErrorCodeUserDisabled تشير إلى أنّ حساب المستخدم غير مفعّل.
FIRAuthErrorCodeWrongPassword تشير إلى أنّ المستخدم حاول تسجيل الدخول باستخدام كلمة مرور غير صحيحة.

signInWithCredential:completion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeInvalidCredential تشير إلى أنّ بيانات الاعتماد المقدَّمة غير صالحة. قد يحدث ذلك إذا انتهت صلاحيته أو كان غير صالح.
FIRAuthErrorCodeInvalidEmail تشير إلى أنّ عنوان البريد الإلكتروني غير صالح، إذا كانت بيانات الاعتماد من النوع EmailPasswordAuthCredential.
FIRAuthErrorCodeOperationNotAllowed تشير إلى أنّ الحسابات التي تستخدم موفّر الهوية الممثَّل ببيانات الاعتماد غير مفعَّلة. يمكنك تفعيلها في وحدة تحكّم Firebase (انتقِل إلى علامة التبويب الأمان > المصادقة > طريقة تسجيل الدخول).
FIRAuthErrorCodeEmailAlreadyInUse تشير إلى أنّ عنوان البريد الإلكتروني الذي تم تأكيده من خلال بيانات الاعتماد (مثل عنوان البريد الإلكتروني في رمز دخول Facebook) مستخدَم حاليًا من خلال حساب حالي لا يمكن مصادقته باستخدام طريقة تسجيل الدخول هذه. استدعِ fetchProvidersForEmail لعنوان البريد الإلكتروني لهذا المستخدم، ثم اطلب منه تسجيل الدخول باستخدام أي من موفّري تسجيل الدخول الذين تم عرضهم. لن يظهر هذا الخطأ إلا إذا تم تفعيل الخيار "حساب واحد لكل عنوان بريد إلكتروني" في وحدة تحكّم Firebase (انتقِل إلى علامة التبويب الأمان > المصادقة > الإعدادات).
FIRAuthErrorCodeUserDisabled تشير إلى أنّ حساب المستخدم غير مفعّل.
FIRAuthErrorCodeWrongPassword تشير إلى أنّ المستخدم حاول تسجيل الدخول باستخدام كلمة مرور غير صحيحة، إذا كانت بيانات الاعتماد من النوع EmailPasswordAuthCredential.

signInAnonymouslyWithCompletion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeOperationNotAllowed تشير إلى أنّه لم يتم تفعيل الحسابات المجهولة. يمكنك تفعيلها في وحدة تحكّم Firebase (انتقِل إلى علامة التبويب الأمان > المصادقة > طريقة تسجيل الدخول).

signInWithCustomToken:completion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeInvalidCustomToken يشير إلى حدوث خطأ في عملية التحقّق من الرمز المميز المخصّص.
FIRAuthErrorCodeCustomTokenMismatch تشير إلى أنّ حساب الخدمة ومفتاح واجهة برمجة التطبيقات ينتميان إلى مشروعَين مختلفَين.

createUserWithEmail:password:completion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeInvalidEmail يشير إلى أنّ عنوان البريد الإلكتروني مكتوب بشكل غير صحيح.
FIRAuthErrorCodeEmailAlreadyInUse يشير إلى أنّ عنوان البريد الإلكتروني المستخدَم لمحاولة الاشتراك متوفّر مسبقًا. اتّصِل بالرقم fetchProvidersForEmail للتحقّق من آليات تسجيل الدخول التي استخدمها هذا المستخدم، واطلب منه تسجيل الدخول باستخدام إحدى هذه الآليات.
FIRAuthErrorCodeOperationNotAllowed يشير إلى أنّه لم يتم تفعيل حسابات البريد الإلكتروني وكلمة المرور. يمكنك تفعيلها في وحدة تحكّم Firebase (انتقِل إلى علامة التبويب الأمان > المصادقة > طريقة تسجيل الدخول).
FIRAuthErrorCodeWeakPassword تشير إلى محاولة ضبط كلمة مرور تُعتبر ضعيفة جدًا. سيتضمّن الحقل NSLocalizedFailureReasonErrorKey في عنصر قاموس NSError.userInfo شرحًا أكثر تفصيلاً يمكن عرضه للمستخدم.

signOut:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeKeychainError يشير إلى حدوث خطأ عند الوصول إلى تطبيق Keychain. سيتضمّن الحقلان NSLocalizedFailureReasonErrorKey وNSUnderlyingErrorKey في قاموس NSError.userInfo مزيدًا من المعلومات حول الخطأ الذي حدث.

FIRUser

الأخطاء الشائعة في عمليات FIRUser

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeInvalidUserToken تشير إلى أنّ الرمز المميز لإعادة تحميل الصفحة الخاص بالمستخدم الذي سجّل الدخول، والذي يتضمّن معلومات الجلسة، غير صالح. عليك أن تطلب من المستخدم تسجيل الدخول مرة أخرى على هذا الجهاز.
FIRAuthErrorCodeUserDisabled تشير إلى أنّ حساب المستخدم غير مفعّل ولم يعُد بالإمكان استخدامه إلى أن يتم تفعيله مرة أخرى في وحدة تحكّم Firebase (انتقِل إلى علامة التبويب الأمان > المصادقة > المستخدمون).

reauthenticateWithCredential:completion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeInvalidCredential تشير إلى أنّ بيانات الاعتماد المقدَّمة غير صالحة. قد يحدث ذلك إذا انتهت صلاحيته أو كان غير صالح.
FIRAuthErrorCodeInvalidEmail تشير إلى أنّ عنوان البريد الإلكتروني غير صالح، إذا كانت بيانات الاعتماد من النوع EmailPasswordAuthCredential.
FIRAuthErrorCodeWrongPassword تشير إلى أنّ المستخدم حاول إعادة المصادقة باستخدام كلمة مرور غير صحيحة، إذا كانت بيانات الاعتماد من النوع EmailPasswordAuthCredential.
FIRAuthErrorCodeUserMismatch يشير إلى أنّه تمت محاولة إعادة المصادقة باستخدام حساب مستخدم آخر غير الحساب الحالي.
FIRAuthErrorCodeOperationNotAllowed تشير إلى أنّ الحسابات التي تستخدم موفّر الهوية الممثَّل ببيانات الاعتماد غير مفعَّلة. فعِّلها في وحدة تحكّم Firebase (انتقِل إلى الأمان > المصادقة).
FIRAuthErrorCodeEmailAlreadyInUse يشير إلى أنّ عنوان البريد الإلكتروني الذي تم تأكيده من خلال بيانات الاعتماد (مثل عنوان البريد الإلكتروني في رمز دخول Facebook) مستخدَم حاليًا من خلال حساب حالي لا يمكن إعادة مصادقته باستخدام طريقة تسجيل الدخول هذه. استدعِ 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 تشير إلى أنّ الحسابات التي تستخدم موفّر الهوية الممثَّل ببيانات الاعتماد غير مفعَّلة. يمكنك تفعيلها في وحدة تحكّم Firebase (انتقِل إلى علامة التبويب الأمان > المصادقة > طريقة تسجيل الدخول).

قد تعرض هذه الطريقة أيضًا رموز خطأ مرتبطة بـ updateEmail:completion: و updatePassword:completion: على FIRUser.

unlinkFromProvider:completion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeNoSuchProvider يشير إلى محاولة إلغاء ربط مقدّم خدمة غير مرتبط بالحساب.
FIRAuthErrorCodeRequiresRecentLogin تعديل عنوان البريد الإلكتروني هو عملية حساسة تتعلّق بالأمان وتتطلّب تسجيل دخول حديث من المستخدم. يشير هذا الخطأ إلى أنّ المستخدم لم يسجّل الدخول مؤخرًا. لحلّ هذه المشكلة، أعِد مصادقة المستخدم عن طريق استدعاء reauthenticateWithCredential:completion: على FIRUser.

sendEmailVerificationWithCompletion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeUserNotFound تشير إلى أنّه لم يتم العثور على حساب المستخدم.

deleteWithCompletion:

الرمز الهدف وراء طلب البحث
FIRAuthErrorCodeRequiresRecentLogin حذف حساب مستخدم هو عملية حساسة من ناحية الأمان وتتطلّب تسجيل دخول حديث من المستخدم. يشير هذا الخطأ إلى أنّ المستخدم لم يسجّل الدخول مؤخرًا. لحلّ هذه المشكلة، أعِد مصادقة المستخدم عن طريق استدعاء reauthenticateWithCredential:completion: على FIRUser.