Firebase Authentication を使用すると、ユーザーがアプリにログインする際に、メールアドレスとパスワードのログイン、Google ログインや Facebook ログインなどのフェデレーション ID プロバイダなど、複数のログイン方法を使用できるようになります。このチュートリアルでは、Firebase Authentication を使って、メールアドレスとパスワードのログインをアプリに追加する方法から始めます。
アプリを Firebase に接続する
- Firebase SDK をインストールします。
- Firebase コンソールで、アプリを Firebase プロジェクトに追加します。
Xcode プロジェクトに Firebase Authentication を追加する
まず、プロジェクトの Podfile に次の依存関係があることを確認します。
pod 'Firebase/Core'
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) { (authResult, error) in
// ...
guard let user = authResult?.user else { return }
}
Objective-C
[[FIRAuth auth] createUserWithEmail:email
password:password
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
既存のユーザーをログインさせる
既存のユーザーがメールアドレスとパスワードを使用してログインできるフォームを作成します。ユーザーがフォームに入力したら、signIn メソッドを呼び出します。
Swift
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
// ...
}
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text
password:self->_passwordField.text
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable 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 プロバイダと匿名ゲスト アカウントのサポートを追加する方法を学びます。

