شروع به کار با «اصالت‌سنجی Firebase» در پلاتفرم‌های Apple

می‌توانید از Firebase Authentication استفاده کنید تا به کاربران اجازه دهید بااستفاده از یک یا چند روش ورود به سیستم، ازجمله ورود به سیستم با نشانی ایمیل و گذرواژه، و ارائه‌دهندگان هویت فدرال مانند «ورود به سیستم با Google» و «ورود به سیستم با Facebook» به سیستم برنامه شما وارد شوند. این آموزش گام‌به‌گام با نشان دادن نحوه افزودن ورود به سیستم با گذرواژه و نشانی ایمیل به برنامه‌تان، شما را با Firebase Authentication آشنا می‌کند.

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

  1. کیت توسعه نرم‌افزار Firebase را نصب کنید.
  2. در کنسول Firebase، برنامه را به پروژه Firebase اضافه کنید.

افزودن Firebase Authentication به برنامه

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

  1. در Xcode، با باز بودن پروژه برنامه، به File > Add Packages (فایل > افزودن بسته‌ها) پیمایش کنید.
  2. وقتی درخواست شد، مخزن کیت توسعه نرم‌افزار پلاتفرم‌های Firebase Apple را اضافه کنید:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. کتابخانه Firebase Authentication را انتخاب کنید.
  5. پرچم -ObjC را به بخش پرچم‌های پیونددهنده دیگر در تنظیمات ساخت هدف اضافه کنید.
  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 واسط کاربر برای نمونه‌سازی تعاملی، یا Authentication میانای برنامه‌سازی کاربردی شبیه‌ساز REST برای آزمایش غیرتعاملی.

راهنمای مفصلی در اتصال برنامه به شبیه‌ساز Authentication دردسترس است. برای اطلاعات بیشتر، مقدمه Local Emulator Suite را ببینید.

اکنون بیایید به نحوه اصالت‌سنجی کاربران ادامه دهیم.

مقداردهی اولیه کیت توسعه نرم‌افزار Firebase

در نماینده برنامه، ابتدا کیت توسعه نرم‌افزار 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;
  // ...
}

مراحل بعدی

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