在 iOS 上開始使用 Firebase 身份驗證

您可以使用 Firebase 身份驗證來允許用戶使用一種或多種登錄方法(包括電子郵件地址和密碼登錄)以及聯合身份提供商(例如 Google 登錄和 Facebook 登錄)登錄您的應用。本教程通過向您展示如何將電子郵件地址和密碼登錄添加到您的應用,從而幫助您開始使用 Firebase 身份驗證。

將您的應用連接到 Firebase

  1. 安裝火力地堡SDK
  2. 火力地堡控制台,您的應用程序添加到您的火力地堡項目。

將 Firebase 身份驗證添加到您的應用

  1. 對於火力地堡認證的依賴添加到項目中的Podfile

    pod 'Firebase/Auth'
    
  2. 運行pod install並打開創建.xcworkspace文件。

(可選)使用 Firebase 本地模擬器套件進行原型設計和測試

在討論您的應用如何對用戶進行身份驗證之前,讓我們先介紹一組可用於對身份驗證功能進行原型設計和測試的工具:Firebase 本地模擬器套件。如果您正在決定身份驗證技術和提供商,使用身份驗證和 Firebase 安全規則嘗試具有公共和私有數據的不同數據模型,或者對登錄 UI 設計進行原型設計,那麼無需部署實時服務即可在本地工作可能是一個好主意.

身份驗證模擬器是本地模擬器套件的一部分,它使您的應用程序能夠與模擬的數據庫內容和配置以及可選的模擬項目資源(函數、其他數據庫和安全規則)進行交互。

使用身份驗證模擬器只需幾個步驟:

  1. 在應用程序的測試配置中添加一行代碼以連接到模擬器。
  2. 從您的本地項目的根目錄下,運行firebase emulators:start
  3. 使用本地模擬器套件 UI 進行交互式原型設計,或使用身份驗證模擬器 REST API 進行非交互式測試。

詳細指南可在連接你的應用程序,以驗證仿真器。欲了解更多信息,請參閱本地仿真套件介紹

現在讓我們繼續如何驗證用戶。

初始化 Firebase SDK

在您的應用委託中,首先導入 Firebase SDK:

迅速

import Firebase

目標-C

@import Firebase;

然後,在application:didFinishLaunchingWithOptions:方法,初始化FirebaseApp對象:

迅速

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

目標-C

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

偵聽身份驗證狀態

對於每一個你的應用程序的意見,大約需要的信息的登錄用戶附加一個監聽到FIRAuth對象。只要用戶的登錄狀態發生變化,就會調用此偵聽器。

附上視圖控制器的聽者viewWillAppear方法:

迅速

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

目標-C

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

和分離在視圖控制器的聽眾viewWillDisappear方法:

迅速

Auth.auth().removeStateDidChangeListener(handle!)

目標-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

註冊新用戶

創建一個表單,允許新用戶使用他們的電子郵件地址和密碼註冊您的應用程序。當用戶完成該表格,驗證由用戶提供的電子郵件地址和密碼,然後將它們傳遞到createUser方法:

迅速

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

目標-C

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

目標-C

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

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

下一步

了解如何添加對其他身份提供商和匿名訪客帳戶的支持: