iOS でパスワード ベースのアカウントを使用して Firebase 認証を行う

Firebase Authentication を使用することで、ユーザーが Firebase での認証にメールアドレスとパスワードを使用できるようにし、アプリのパスワード ベースのアカウントを管理できます。

準備

  1. Firebase を iOS プロジェクトに追加しますPodfile に次のポッドをインクルードします。
    pod 'Firebase/Auth'
    
  2. アプリを Firebase プロジェクトに接続していない場合は、Firebase console で接続します。
  3. メールとパスワードによるログインを有効にします。
    1. Firebase console で [Authentication] を開きます。
    2. [ログイン方法] タブで [メール / パスワード] を有効にして、[保存] をクリックします。

パスワード ベースのアカウントを作成する

パスワードを使用して新しいユーザー アカウントを作成するには、アプリのログイン アクティビティで次の手順に沿って操作します。

  1. Firebase モジュールを UIApplicationDelegate サブクラスにインポートします。

    Objective-C

    @import Firebase;
    

    Swift

    import Firebase
    
  2. FIRApp 共有インスタンスを設定します。通常はアプリケーションの application:didFinishLaunchingWithOptions: メソッドを使用します。

    Objective-C

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

    Swift

    // Use Firebase library to configure APIs
    FIRApp.configure()
    
  3. 新しいユーザーがアプリの登録フォームを使用して登録したら、アプリで必要な新しいアカウントの検証手順(新しいアカウントのパスワードが正しく入力されていることや、パスワードの複雑さの要件を満たしていることの確認など)を行います。
  4. 新しいユーザーのメールアドレスとパスワードを createUserWithEmail:email:password:completion: に渡して、新しいアカウントを作成します。

    Objective-C

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

    Swift

    FIRAuth.auth()?.createUser(withEmail: email, password: password) { (user, error) in
      // ...
    }
    新しいアカウントが正常に作成され、ユーザーがログインすると、コールバック メソッドに渡されたユーザー オブジェクトからユーザーのアカウント データを取得できます。

メールアドレスとパスワードを使用してユーザーのログインを行う

パスワードを使用したユーザーのログイン手順は、新しいアカウントの作成手順と似ています。アプリのログイン アクティビティで、次の手順に沿って操作します。

  1. Firebase モジュールを UIApplicationDelegate サブクラスにインポートします。

    Objective-C

    @import Firebase;
    

    Swift

    import Firebase
    
  2. FIRApp 共有インスタンスを設定します。通常はアプリケーションの application:didFinishLaunchingWithOptions: メソッドを使用します。

    Objective-C

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

    Swift

    // Use Firebase library to configure APIs
    FIRApp.configure()
    
  3. ユーザーがアプリにログインしたら、そのユーザーのメールアドレスとパスワードを signInWithEmail:email:password:completion: に渡します。

    Objective-C

    [[FIRAuth auth] signInWithEmail:_emailField.text
                           password:_passwordField.text
                         completion:^(FIRUser *user, NSError *error) {
                           // ...
                         }];

    Swift

    FIRAuth.auth()?.signIn(withEmail: email, password: password) { (user, error) in
      // ...
    }
    ユーザーが正常にログインすると、コールバック メソッドに渡されたユーザー オブジェクトからユーザーのアカウント データを取得できます。

次のステップ

ユーザーが初めてログインすると新しいユーザー アカウントが作成され、ユーザーがログインに使用した認証情報(ユーザー名とパスワードや認証プロバイダ情報)にリンクされます。この新しいアカウントは Firebase プロジェクトの一部として保存され、ユーザーのログイン方法にかかわらず、プロジェクトのすべてのアプリでユーザーを識別するために使用できます。

  • アプリでは、FIRUser オブジェクトからユーザーの基本的なプロフィール情報を取得できます。ユーザーの管理についての記事をご覧ください。

  • Firebase Realtime Database と Firebase Storage のセキュリティ ルールで、ログイン済みユーザーに固有のユーザー ID を auth 変数から取得し、これを使用してユーザーがアクセスできるデータを制御できます。

既存のユーザー アカウントに認証プロバイダの認証情報をリンクすることで、ユーザーが複数の認証プロバイダを使用してアプリにログインできるようになります。

ユーザーのログアウトを行うには signOut: を呼び出します。

Objective-C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

Swift

    let firebaseAuth = FIRAuth.auth()
do {
  try firebaseAuth?.signOut()
} catch let signOutError as NSError {
  print ("Error signing out: %@", signOutError)
}
  

さまざまな認証エラーに対応できるようにエラー処理コードを追加することもできます。エラーの処理についての記事をご覧ください。

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