Android Studio で Firebase Authentication を使ってみる

How To

今回は、Firebase Authentication のメール認証に挑戦です。

メール認証の他にも、Twitter 認証や、匿名認証も用意されています。

初めてだから失敗するかも。

認証コンポーネントを追加する

プロジェクトに認証コンポーネントを追加します。

前回、Android Studio と Google アカウントを紐づけてあるので、接続は済んでいると思います。

まだの方は前回の記事を参考にして、接続してみて下さい。簡単だから説明なんて要らないけどね。

Add Firebase Authentication to your app を押します。

プロジェクトに追加されるコンポーネントが表示されます。

Accept Changes を押します。

レイアウトにテキストボックスとボタンを配置する

次に、見た目を作っていきます。

とりあえず、こんな感じにザックリと作ってみました。

今回はIDも変えているので、ソースをコピペする場合は気をつけて下さい。

認証のログイン方法を設定する

Firebase コンソールから認証に使用するログイン方法を設定します。

メールパスワードを有効にする

今回は、メール認証をするのでメールパスワードを有効にします。

他にもいろいろな認証方法があるので、利用者は便利だと思います。

認証処理を書く

お馴染みの Android Studio に戻って、[MainActivity.java]に認証処理を書いて行きます。

1.認証に必要なインポートをする。

import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

2.FirebaseAuth のプライベートメンバー変数を宣言する。

private FirebaseAuth mAuth;

3.onCreate() メソッドで、FirebaseAuth インスタンスを初期化します。

mAuth = FirebaseAuth.getInstance();

4.認証状態の確認ボタンの処理を書く。

findViewById(R.id.check_user_btn).setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    FirebaseUser user = mAuth.getCurrentUser();
    if (user != null) {
      showDialog(user.getUid());
    }
  }
});

5.新規登録ボタンの処理を書く。

findViewById(R.id.create_user_btn).setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    String email = ((TextView)findViewById(R.id.email_txt)).getText().toString();
    String password = ((TextView)findViewById(R.id.password_txt)).getText().toString();
    createUser(email, password);
  }
});

6.ログインボタンの処理を書く。

findViewById(R.id.sign_in_btn).setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    String email = ((TextView)findViewById(R.id.email_txt)).getText().toString();
    String password = ((TextView)findViewById(R.id.password_txt)).getText().toString();
    signIn(email, password);
  }
});

7.新規登録処理を書く。

private void createUser(String email, String password) {
  mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
      if (task.isSuccessful()) {
        FirebaseUser user = mAuth.getCurrentUser();
        showDialog(user.getUid());
      }
    }
  });
}

8.ログイン処理を書く。

private void signIn(String email, String password) {
  mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
      if (task.isSuccessful()) {
        FirebaseUser user = mAuth.getCurrentUser();
        showDialog(user.getUid());
      }
    }
  });
}

9.確認ダイアログ処理を書く。

private void showDialog(String message) {
  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setMessage(message);
  builder.setPositiveButton("閉じる", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
      dialog.cancel();
    }
  });
  Dialog dialog = builder.create();
  dialog.show();
}

なんやかんやで長くなってしまいました。

やっていることは前回と同じで、ボタンを押したら入力してあるメルアドとパスワードを、createUser や、signIn に投げているだけです。

そして結果が戻ってきて、成功だったらダイアログを表示する。

そんな感じですね。

実機で動かしてみよう

実機に転送して動作確認

実機に転送して動作確認をやってみます。

適当なメールアドレスとパスワードを入力して、新規登録のボタンを押しました。

新規登録が成功したので、ダイアログと UID が表示されました。

やったね。

Firebase コンソールも確認しておきます。

同じ UID で登録されていますね。

実際に存在するメールアドレスでの確認は控えよう

実際に存在するメールアドレスで確認するのもいいのですが、注意が必要です。

一応、今のコードだとメールが飛ばないのでいいですけど、実際にメールを飛ばす処理を書くと、本当に飛んでいってしまいます。

自分が持っているメールアドレスならいいけど、知らないメールアドレスに飛ばすと、スパムメールになって迷惑が掛かるので気をつけて下さい。

めちゃくちゃつまずいて心折れかけた

私がつまずいた点を紹介します。

パスワードは6文字以上

これに気がつくまでどれだけ苦労したか!!!

Google が配布している Firebase のチュートリアルのソースコードを拾ってきて、実際に動かしても認証されないし。

どこにも書いてないし。ホント、勘弁してください。

そんな気分で、いじくっていたら出来ました!

そんなこんなで

そんなこんなで、Firebase Authentication 編、完結です。

次は、Twitter 認証パート編です。

よろしくお願いします。

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