Firebase Authentication について

0

Firebase Authentication とは?

ユーザの作成や管理、ログインの機能を提供してくれるサービスです。

1から実装すると面倒なこれらの機能を、Firebase を利用することでお手軽にアプリに組み込むことができます。

認証方法は、幾つかのものから選ぶことができます。

例えば以下のようなものがあります。

  • メールアドレスとパスワードによる認証
  • GoogleやFacebookのアカウントを使用した認証
  • 電話番号認証
  • 匿名認証

メールアドレスとパスワードによるユーザ作成

機能の有効化

それぞれの認証ごとに、有効化をする必要があります。

Firebase コンソールを開き、画面左のメニューから「Authentication」を選択します。

「ログイン方法」タブを選択します。

「ログイン プロバイダ」の一覧から「メール / パスワード」を選択し、「有効にする」スイッチをオンにして、保存ボタンを押します。

実装

メールアドレスとパスワードを使ったユーザ作成の実装について説明します。

まず、アプリにログイン画面を用意して、「メールアドレス」と「パスワード」の入力欄を設置し、ログインボタンを設置します。

ユーザがログインボタンを押下したときに、コールバック関数のなかで以下の処理を実行します。

FirebaseAuth mAuth = FirebaseAuth.getInstance();
Task<AuthResult> task = mAuth.createUserWithEmailAndPassword(email, password);
task.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  @Override
  public void onComplete(@NonNull Task<AuthResult> task) {
    if (task.isSuccessful()) {
      Log.d(TAG, "createUserWithEmail : success");
    } else {
      Log.w(TAG, "createUserWithEmail : failure", task.getException());
    }
  }
});

createUserWithEmailAndPassword 関数に、ユーザが入力したメアドとパスワードを渡します。

非同期で結果のレスポンスが返ってきますので、成否に応じて続きの処理を行います。

成功した場合は、ユーザが作られています。

作られたユーザの確認

作られたユーザは、Firebase コンソールの「Authentication」画面にて確認できます。

「ユーザー」タブを選択して下さい。

メールアドレスを使って作ったユーザは、識別子がメールアドレスになっています。

また、プロバイダのところにメールのアイコンが表示されています。

ログイン

アプリにおいて、作成済みのユーザのメアドとパスワードを使って、ログインをするには、以下のようにします。

FirebaseAuth mAuth = FirebaseAuth.getInstance();
Task<AuthResult> task = mAuth.signInWithEmailAndPassword(email, password);
task.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  @Override
  public void onComplete(@NonNull Task<AuthResult> task) {
    if (task.isSuccessful()) {
      Log.d(TAG, "signInWithEmail : success");
    } else {
      Log.w(TAG, "signInWithEmail : failure", task.getException());
    }
  }
});

signInWithEmailAndPassword 関数に、メアドとパスワードを渡します。

ログインしていることの確認

現在ユーザがログインしていることを確認するには、以下のようにします。


FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser currentUser = mAuth.getCurrentUser();
if (currentUser == null) {
  Log.d(TAG, "User : null");
} else {
  Log.d(TAG, "User : " + currentUser.getUid());
}

ログインしている場合は、getCurrentUser 関数がユーザ情報を返します。

null が返った場合は、ログインしていません。

ログアウト

ログアウトを行うには、以下のようにします。

FirebaseAuth mAuth = FirebaseAuth.getInstance();
mAuth.signOut();

確認メールを送信する

上述した方法でユーザを作成した時点では、メールアドレスが認証されていない状態になっています。

以下のコードで、それが確認できます。

FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser currentUser = mAuth.getCurrentUser();
Log.d(TAG, "isEmailVerified : " + currentUser.isEmailVerified());

メールアドレスを認証するには、以下のようにします。

FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser currentUser = mAuth.getCurrentUser();
currentUser.sendEmailVerification();

sendEmailVerification 関数を実行すると、ユーザのメールアドレスに確認メールが送信されます。

ユーザが受信した確認メールの中のリンクを開くと、メールアドレスが認証されます。

なお、確認メールの文言などは、Firebase コンソールの Authentication 画面の「テンプレート」タブの画面で設定することができます

0
タイトルとURLをコピーしました