iOS で Firebase Authentication を使ってみる

Firebase Authentication を使用すると、ユーザーがアプリにログインする場合に、メールアドレスとパスワードのログイン、Google ログインや Facebook ログインなどのフェデレーション ID プロバイダなど、複数のログイン方法を使用できるようになります。このチュートリアルでは、Firebase Authentication を使って、メールアドレスとパスワードのログインをアプリに追加する方法から始めます。

アプリを Firebase に接続する

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

Xcode プロジェクトに Firebase Authentication を追加する

まず、プロジェクトの Podfile に次の依存関係があることを確認します。

pod 'Firebase/Auth'

次に、pod install を実行して、作成された .xcworkspace ファイルを開きます。

Firebase SDK を初期化する

アプリのデリゲートで、まず Firebase SDK をインポートします。

Swift

import Firebase

Objective-C

@import Firebase;

次に、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) { (user, error) in
  // ...
}

Objective-C

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

既存のユーザーをログインさせる

既存のユーザーがメールアドレスとパスワードを使用してログインできるフォームを作成します。ユーザーがフォームに入力したら、signIn メソッドを呼び出します。

Swift

Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
  // ...
}

Objective-C

[[FIRAuth auth] signInWithEmail:_emailField.text
                       password:_passwordField.text
                     completion:^(FIRUser *user, NSError *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
  // ...
}

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 *uid = user.uid;
  NSString *email = user.email;
  NSURL *photoURL = user.photoURL;
  // ...
}

次のステップ

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

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。