بدء مصادقة Firebase على أنظمة Apple الأساسية

يمكنك استخدام مصادقة Firebase للسماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام المزيد من طرق تسجيل الدخول، بما في ذلك عنوان البريد الإلكتروني وكلمة المرور لتسجيل الدخول موفري الهوية الموحدة مثل "تسجيل الدخول بحساب Google" و"تسجيل الدخول إلى Facebook". هذا النمط يساعدك هذا البرنامج التعليمي في بدء استخدام مصادقة Firebase من خلال توضيح كيفية إضافة وعنوان البريد الإلكتروني وكلمة المرور لتسجيل الدخول إلى التطبيق.

ربط تطبيقك بمنصّة Firebase

  1. ثبِّت حزمة تطوير البرامج (SDK) لمنصّة Firebase.
  2. أضف تطبيقك إلى مشروع Firebase من خلال وحدة تحكم Firebase.

إضافة مصادقة Firebase إلى تطبيقك

يمكنك استخدام "مدير حزم Swift" لتثبيت اعتماديات Firebase وإدارتها.

  1. في Xcode، انتقِل إلى File (ملف) > بعد فتح مشروع التطبيق الخاص بك. إضافة حِزم
  2. أضِف مستودع حزمة تطوير البرامج (SDK) لمنصّات Firebase Apple عندما يُطلب منك ذلك:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. اختر مكتبة مصادقة Firebase.
  5. أضِف العلامة -ObjC إلى القسم علامات الروابط الأخرى في إعدادات إصدار هدفك.
  6. عند الانتهاء، سيبدأ Xcode تلقائيًا في حل وتنزيل ملف والتبعيات في الخلفية.

(اختياري) إنشاء نموذج أولي واختباره باستخدام "حزمة أدوات المحاكاة المحلية من Firebase"

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

يُعد محاكي المصادقة جزءًا من مجموعة أدوات المحاكاة المحلية، التي لتطبيقك من التفاعل مع محتوى قواعد البيانات التي تمت محاكاتها وإعداداتها، بالإضافة إلى موارد المشروع التي تمت محاكاتها (الدوال وقواعد البيانات الأخرى وقواعد الأمان).

يتضمن استخدام محاكي المصادقة بضع خطوات فقط:

  1. إضافة سطر من الرمز إلى إعدادات اختبار تطبيقك للاتصال بالمحاكي.
  2. من جذر دليل المشروع المحلي، مع تشغيل firebase emulators:start.
  3. استخدام واجهة مستخدم مجموعة أدوات المحاكاة المحلية لإنشاء النماذج الأولية التفاعلية، أو واجهة برمجة تطبيقات REST لمحاكي المصادقة للاختبار غير التفاعلي

يتوفّر دليل تفصيلي في ربط تطبيقك بمحاكي المصادقة. لمزيد من المعلومات، اطّلِع على مقدمة عن مجموعة أدوات المحاكاة المحلية.

لننتقل الآن إلى كيفية مصادقة المستخدمين.

إعداد حزمة تطوير البرامج (SDK) لمنصّة Firebase

في التطبيق المفوَّض، عليك أولاً استيراد حزمة تطوير البرامج (SDK) لمنصّة Firebase وفقًا لما يلي:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

بعد ذلك، باستخدام طريقة application:didFinishLaunchingWithOptions:، ابدأ في إعداد كائن FirebaseApp:

Swift

// Use Firebase library to configure APIs
FirebaseApp.configure()

Objective-C

// Use Firebase library to configure APIs
[FIRApp configure];

الاستماع إلى حالة المصادقة

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

إرفاق المستمع في طريقة viewWillAppear لوحدة التحكم في العرض:

Swift

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

ويمكنك فصل المستمع من خلال طريقة viewWillDisappear لوحدة التحكم في العرض:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

تسجيل اشتراك مستخدمين جدد

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

Swift

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

Objective-C

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

تسجيل دخول المستخدمين الحاليين

إنشاء نموذج يسمح للمستخدمين الحاليين بتسجيل الدخول باستخدام عنوان بريدهم الإلكتروني وكلمة المرور. عندما يُكمل المستخدم النموذج، يجب استدعاء طريقة signIn:

Swift

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

Objective-C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

الحصول على معلومات المستخدم

بعد أن يسجِّل المستخدم دخوله بنجاح، يمكنك الحصول على معلومات حول المستخدم. بالنسبة مثال، في أداة استماع حالة المصادقة:

Swift

if let user = user {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

Objective-C

if (user) {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

الخطوات التالية

التعرُّف على كيفية إتاحة موفِّري الهوية الآخرين والضيف المجهول الحسابات: