Firebase Authentication を使用すると、ユーザーが Firebase での認証にメールアドレスとパスワードを使用できるようにして、アプリのパスワード ベースのアカウントを管理できます。
準備
- Firebase を iOS プロジェクトに追加します。
Podfile
に次の Pod を含めます。pod 'Firebase/Auth'
- アプリを Firebase プロジェクトに接続していない場合は、Firebase コンソールで接続します。
- メールアドレスとパスワードによるログインを有効にします。
- Firebase コンソールで [Authentication] セクションを開きます。
- [ログイン方法] タブで [メール / パスワード] を有効にして、[保存] をクリックします。
パスワード ベースのアカウントを作成する
パスワードを使用して新しいユーザー アカウントを作成するには、アプリのログイン アクティビティで次の手順に沿って操作します。
- Firebase モジュールを
UIApplicationDelegate
にインポートします。Swift
import Firebase
Objective-C
@import Firebase;
FirebaseApp
共有インスタンスを構成します。通常はアプリのapplication:didFinishLaunchingWithOptions:
メソッドで行います。Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- 新しいユーザーがアプリの登録フォームを使用して登録したら、アプリで必要な新しいアカウントの検証手順(新しいアカウントのパスワードが正しく入力されていることや、パスワードの複雑さの要件を満たしているかの確認など)を行います。
- 新しいユーザーのメールアドレスとパスワードを
createUserWithEmail:email:password:completion:
に渡して、新しいアカウントを作成します。Swift
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) { // ... }];
メールアドレスとパスワードを使用してユーザーのログインを行う
パスワードを使用したユーザーのログイン手順は、新しいアカウントの作成手順と似ています。アプリのログイン アクティビティで、次の手順を行います。
- Firebase モジュールを
UIApplicationDelegate
にインポートします。Swift
import Firebase
Objective-C
@import Firebase;
FirebaseApp
共有インスタンスを構成します。通常はアプリのapplication:didFinishLaunchingWithOptions:
メソッドで行います。Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- ユーザーがアプリにログインしたら、そのユーザーのメールアドレスとパスワードを
signInWithEmail:email:password:completion:
に渡します。Swift
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) { // ... }];
次のステップ
ユーザーが初めてログインすると、新しいユーザー アカウントが作成され、ユーザーがログインに使用した認証情報(ユーザー名とパスワード、電話番号、または認証プロバイダ情報)にアカウントがリンクされます。この新しいアカウントは Firebase プロジェクトの一部として保存され、ユーザーのログイン方法にかかわらず、プロジェクトのすべてのアプリでユーザーを識別するために使用できます。
-
アプリでは、
FIRUser
オブジェクトからユーザーの基本的なプロフィール情報を取得できます。ユーザーの管理についての記事をご覧ください。 Firebase Realtime Database と Cloud Storage のセキュリティ ルールでは、ログイン済みユーザーの一意のユーザー ID を
auth
変数から取得し、それを使用して、ユーザーがアクセスできるデータを管理できます。
既存のユーザー アカウントに認証プロバイダの認証情報をリンクすることで、ユーザーは複数の認証プロバイダを使用してアプリにログインできるようになります。
ユーザーのログアウトを行うには、signOut:
を呼び出します。
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print ("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
さまざまな認証エラーに対応できるようにエラー処理コードを追加することもできます。エラーの処理をご覧ください。