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

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

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

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

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

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

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

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

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

FIRAuth

FetchProvidersForEmail:الإكمال:

الرمز المعنى
FIRAuthErrorCodeInvalidEmail يشير إلى كتابة عنوان البريد الإلكتروني بشكل غير صحيح.

SignInWithEmail:password:complete:

الرمز المعنى
FIRAuthErrorCodeOperationNotAllowed يشير إلى عدم تفعيل حسابات البريد الإلكتروني وكلمة المرور. يمكنك تفعيلها من قسم "المصادقة" في وحدة تحكُّم Firebase.
FIRAuthErrorCodeInvalidEmail يشير إلى كتابة عنوان البريد الإلكتروني بشكل غير صحيح.
FIRAuthErrorCodeUserDisabled يشير إلى إيقاف حساب المستخدم.
FIRAuthErrorCodeWrongPassword يشير إلى أنّ المستخدم حاول تسجيل الدخول باستخدام كلمة مرور خاطئة.

SignInWithCredential:complete:

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

SignInمجهولlyWithcomplete:

الرمز المعنى
FIRAuthErrorCodeOperationNotAllowed يشير إلى عدم تفعيل الحسابات المجهولة. يمكنك تفعيلها من قسم "المصادقة" في وحدة تحكُّم Firebase.

SignInWithCustomToken:complete:

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

createUserWithEmail:password:complete:

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

تسجيل الخروج:

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

FIRUser

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

الرمز المعنى
FIRAuthErrorCodeInvalidUserToken يشير هذا الرمز إلى أنّ الرمز المميّز لإعادة التحميل للمستخدم الذي سجَّل الدخول والذي يحتوي على معلومات الجلسة غير صالح. يجب أن تطلب من المستخدم تسجيل الدخول مرة أخرى على هذا الجهاز.
FIRAuthErrorCodeUserDisabled يشير إلى إيقاف حساب المستخدم ولا يمكن استخدامه بعد الآن إلى أن يتم تفعيله مرة أخرى من داخل لوحة "المستخدمون" في وحدة تحكُّم Firebase.

إكمال عملية إعادة المصادقة:

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

updateEmail:الإكمال:

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

UpdatePassword:الإكمال:

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

linkWithCredential:الإكمال:

الرمز المعنى
FIRAuthErrorCodeProviderAlreadyLinked يشير هذا الحقل إلى محاولة لربط مقدّم خدمة من نوع سبق أن تم ربطه بهذا الحساب.
FIRAuthErrorCodeCredentialAlreadyInUse يشير هذا الحقل إلى محاولة الربط ببيانات اعتماد تم ربطها من قبل بحساب مختلف في Firebase.
FIRAuthErrorCodeOperationNotAllowed يشير هذا الرمز إلى أنّه لم يتم تفعيل الحسابات التي يستخدمها موفِّر الهوية الذي تمثّله بيانات الاعتماد. يمكنك تفعيلها من قسم "المصادقة" في وحدة تحكُّم Firebase.

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

cancelFromProvider:الإكمال:

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

sendEmailVerifyWithcomplete:

الرمز المعنى
FIRAuthErrorCodeUserNotFound يشير إلى عدم العثور على حساب المستخدم.

deleteWithcomplete:

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