Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

AppleプラットフォームでFirebase認証を開始する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Firebase Authentication を使用すると、メール アドレスとパスワードによるサインイン、Google サインインや Facebook ログインなどのフェデレーション ID プロバイダーなど、1 つ以上のサインイン方法を使用してユーザーがアプリにサインインできるようになります。このチュートリアルでは、メール アドレスとパスワードによるサインインをアプリに追加する方法を示すことで、Firebase Authentication の使用を開始できます。

アプリを Firebase に接続する

  1. Firebase SDK をインストールします
  2. Firebase コンソールで、アプリを Firebase プロジェクトに追加します。

アプリに Firebase Authentication を追加する

Swift Package Manager を使用して、Firebase の依存関係をインストールおよび管理します。

  1. Xcode で、アプリ プロジェクトを開いた状態で、 File > Add Packagesに移動します。
  2. プロンプトが表示されたら、Firebase Apple プラットフォーム SDK リポジトリを追加します。
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Firebase Authentication ライブラリを選択します。
  5. 完了すると、Xcode はバックグラウンドで依存関係の解決とダウンロードを自動的に開始します。

(省略可)Firebase Local Emulator Suite でプロトタイプを作成してテストする

アプリがユーザーを認証する方法について説明する前に、認証機能のプロトタイプとテストに使用できる一連のツール、Firebase Local Emulator Suite を紹介しましょう。認証技術とプロバイダーを決定している場合、Authentication と Firebase セキュリティ ルールを使用してパブリック データとプライベート データでさまざまなデータ モデルを試している場合、またはサインイン UI デザインのプロトタイプを作成している場合、ライブ サービスをデプロイせずにローカルで作業できることは素晴らしいアイデアです。 .

認証エミュレーターはローカル エミュレーター スイートの一部であり、アプリがエミュレートされたデータベースのコンテンツと構成、および必要に応じてエミュレートされたプロジェクト リソース (関数、他のデータベース、およびセキュリティ ルール) とやり取りできるようにします。

認証エミュレーターを使用するには、いくつかの手順が必要です。

  1. アプリのテスト構成にコード行を追加して、エミュレーターに接続します。
  2. ローカル プロジェクト ディレクトリのルートから、 firebase emulators:startを実行します。
  3. インタラクティブなプロトタイピングにはローカル エミュレーター スイート UI を使用し、非インタラクティブなテストには認証エミュレーター REST API を使用します。

詳細なガイドは、アプリを認証エミュレーターに接続するで入手できます。詳細については、 Local Emulator Suiteの概要を参照してください。

それでは、ユーザーを認証する方法を続けましょう。

Firebase SDK を初期化する

アプリ デリゲートで、最初に Firebase SDK をインポートします。

迅速

import FirebaseCore

Objective-C

@import FirebaseCore;

次に、 application:didFinishLaunchingWithOptions:メソッドで、 FirebaseAppオブジェクトを初期化します。

迅速

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

Objective-C

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

認証状態をリッスンする

サインインしているユーザーに関する情報が必要なアプリのビューごとに、リスナーをFIRAuthオブジェクトにアタッチします。このリスナーは、ユーザーのサインイン状態が変化するたびに呼び出されます。

ビュー コントローラーのviewWillAppearメソッドにリスナーをアタッチします。

迅速

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

Objective-C

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

そして、View Controller のviewWillDisappearメソッドでリスナーを切り離します。

迅速

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

新規ユーザー登録

新しいユーザーがメール アドレスとパスワードを使用してアプリに登録できるフォームを作成します。ユーザーがフォームに入力したら、ユーザーから提供された電子メール アドレスとパスワードを検証し、それらをcreateUserメソッドに渡します。

迅速

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メソッドを呼び出します。

迅速

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

ユーザー情報を取得する

ユーザーが正常にサインインすると、ユーザーに関する情報を取得できます。たとえば、認証状態リスナーでは次のようになります。

迅速

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

次のステップ

他の ID プロバイダーと匿名ゲスト アカウントのサポートを追加する方法を学習します。