با احراز هویت Firebase در پلتفرم های اپل شروع کنید

شما می‌توانید Firebase Authentication استفاده کنید تا به کاربران اجازه دهید با استفاده از یک یا چند روش ورود به سیستم، از جمله ورود با آدرس ایمیل و رمز عبور، و ارائه دهندگان هویت فدرال مانند ورود به سیستم گوگل و ورود به سیستم فیسبوک، وارد برنامه شما شوند. این آموزش با نشان دادن نحوه اضافه کردن ورود با آدرس ایمیل و رمز عبور به برنامه، شما را با Firebase Authentication آشنا می‌کند.

برنامه خود را به Firebase وصل کنید

  1. فایربیس SDK را نصب کنید .
  2. در کنسول Firebase ، برنامه خود را به پروژه Firebase خود اضافه کنید.

Firebase Authentication به برنامه خود اضافه کنید

برای نصب و مدیریت وابستگی‌های Firebase از Swift Package Manager استفاده کنید.

  1. در Xcode، با باز کردن پروژه برنامه خود، به File > Add Packages بروید.
  2. وقتی از شما خواسته شد، مخزن SDK پلتفرم‌های اپل فایربیس را اضافه کنید:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. کتابخانه Firebase Authentication را انتخاب کنید.
  5. پرچم -ObjC را به بخش Other Linker Flags در تنظیمات ساخت هدف خود اضافه کنید.
  6. پس از اتمام، Xcode به طور خودکار شروع به حل و دانلود وابستگی‌های شما در پس‌زمینه می‌کند.

(اختیاری) نمونه اولیه و تست با Firebase Local Emulator Suite

قبل از صحبت در مورد نحوه احراز هویت کاربران توسط برنامه شما، بیایید مجموعه‌ای از ابزارهایی را که می‌توانید برای نمونه‌سازی اولیه و آزمایش عملکرد Authentication استفاده کنید، معرفی کنیم: Firebase Local Emulator Suite . اگر در حال تصمیم‌گیری بین تکنیک‌ها و ارائه‌دهندگان احراز هویت هستید، مدل‌های داده مختلف را با داده‌های عمومی و خصوصی با استفاده از Authentication و Firebase Security Rules امتحان می‌کنید، یا طرح‌های رابط کاربری ورود به سیستم را نمونه‌سازی می‌کنید، توانایی کار به صورت محلی بدون استقرار سرویس‌های زنده می‌تواند ایده خوبی باشد.

یک شبیه‌ساز Authentication بخشی از Local Emulator Suite است که به برنامه شما امکان می‌دهد با محتوا و پیکربندی پایگاه داده شبیه‌سازی شده، و همچنین به صورت اختیاری با منابع پروژه شبیه‌سازی شده شما (توابع، سایر پایگاه‌های داده و قوانین امنیتی) تعامل داشته باشد.

استفاده از شبیه‌ساز Authentication فقط شامل چند مرحله است:

  1. اضافه کردن یک خط کد به فایل پیکربندی آزمایشی برنامه برای اتصال به شبیه‌ساز.
  2. از ریشه دایرکتوری پروژه محلی خود، firebase emulators:start .
  3. استفاده از رابط کاربری Local Emulator Suite برای نمونه‌سازی تعاملی، یا REST API شبیه‌ساز Authentication برای آزمایش غیرتعاملی.

راهنمای مفصلی در «برنامه خود را به شبیه‌ساز Authentication متصل کنید» موجود است. برای اطلاعات بیشتر، به معرفی Local Emulator Suite مراجعه کنید.

حالا بیایید به نحوه احراز هویت کاربران ادامه دهیم.

مقداردهی اولیه SDK فایربیس

در نماینده برنامه خود، ابتدا Firebase SDK را وارد کنید:

سویفت

import FirebaseCore

هدف-سی

@import FirebaseCore;

سپس، در application:didFinishLaunchingWithOptions: شیء FirebaseApp را مقداردهی اولیه کنید:

سویفت

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

هدف-سی

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

گوش دادن به وضعیت احراز هویت

برای هر یک از view های برنامه که به اطلاعات کاربر وارد شده نیاز دارند، یک listener به شیء FIRAuth متصل کنید. این listener هر زمان که وضعیت ورود کاربر تغییر کند، فراخوانی می‌شود.

شنونده (listener) را به متد viewWillAppear از کنترلر نما (view controller) ضمیمه کنید:

سویفت

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

هدف-سی

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

و شنونده را در متد viewWillDisappear از کنترلر نما جدا کنید:

سویفت

Auth.auth().removeStateDidChangeListener(handle!)

هدف-سی

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

ثبت نام کاربران جدید

فرمی ایجاد کنید که به کاربران جدید اجازه دهد با استفاده از آدرس ایمیل و رمز عبور خود در برنامه شما ثبت نام کنند. وقتی کاربر فرم را تکمیل می‌کند، آدرس ایمیل و رمز عبور ارائه شده توسط کاربر را اعتبارسنجی کنید، سپس آنها را به متد createUser ارسال کنید:

سویفت

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

هدف-سی

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

ورود کاربران فعلی

فرمی ایجاد کنید که به کاربران موجود اجازه دهد با استفاده از آدرس ایمیل و رمز عبور خود وارد سیستم شوند. وقتی کاربر فرم را تکمیل کرد، متد signIn را فراخوانی کنید:

سویفت

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

هدف-سی

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

دریافت اطلاعات کاربر

بعد از اینکه کاربر با موفقیت وارد سیستم شد، می‌توانید اطلاعاتی در مورد کاربر دریافت کنید. برای مثال، در شنونده وضعیت احراز هویت خود:

سویفت

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 += " "
  }
  // ...
}

هدف-سی

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;
  // ...
}

مراحل بعدی

یاد بگیرید چگونه پشتیبانی از سایر ارائه دهندگان هویت و حساب‌های مهمان ناشناس را اضافه کنید: