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

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

準備

  1. Firebase を iOS プロジェクトに追加しますPodfile に次のポッドをインクルードします。
     verbatim 69c2a21022e657d9f2ea355fa969894c pod 'Firebase/Auth' endverbatim 69c2a21022e657d9f2ea355fa969894c 
    
  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

     verbatim f4837415eb98478ae53b9bc9796b0226 // Use Firebase library to configure APIs
    [FIRApp configure]; endverbatim f4837415eb98478ae53b9bc9796b0226 
    

    Swift

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

    Objective-C

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

    Swift

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

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

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

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

    Objective-C

    @import Firebase;
    

    Swift

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

    Objective-C

     verbatim f4837415eb98478ae53b9bc9796b0226 // Use Firebase library to configure APIs
    [FIRApp configure]; endverbatim f4837415eb98478ae53b9bc9796b0226 
    

    Swift

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

    Objective-C

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

    Swift

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

次のステップ

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

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

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

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

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

Objective-C

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

Swift

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

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

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