中核となる機能は、
FirebaseUser オブジェクトに含まれています。そこにある sendEmailVerification() メソッドは、非同期的にメールを送信し、そのステータスを報告する
Task を返します。タスクが成功すると、メールが送信されたことが通知されます。次に例を示します。
final FirebaseUser user = mAuth.getCurrentUser();
user.sendEmailVerification()
.addOnCompleteListener(this, new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
// Re-enable button
findViewById(R.id.verify_email_button).setEnabled(true);
if (task.isSuccessful()) {
Toast.makeText(EmailPasswordActivity.this,
"Verification email sent to " + user.getEmail(),
Toast.LENGTH_SHORT).show();
} else {
Log.e(TAG, "sendEmailVerification", task.getException());
Toast.makeText(EmailPasswordActivity.this,
"Failed to send verification email.",
Toast.LENGTH_SHORT).show();
}
}
});
このケースでは、
mAuth.getCurrentUser()
でユーザーを取得し、そのユーザーに対して
sendEmailVerification()
メソッドを呼び出しています。このメソッドを実行すると、Firebase によりメールが送信されます。タスクが成功すると、メールが送信されたことを示すトースト通知が表示されます。
ユーザーがメールのリンクをクリックした後に
user.isEmailVerified()
を呼び出すと true が返されます。サンプルアプリでは、これを次のように使用しています。
mStatusTextView.setText(getString(R.string.emailpassword_status_fmt,
user.getEmail(), user.isEmailVerified()));
FirebaseUser オブジェクトはアプリのセッションが続いている間だけキャッシュされる点に注意してください。そのため、ユーザーの確認ステータスをチェックしたいときは、キャッシュをアップデートするために
.getCurrentUser().reload()
を呼び出すとよいでしょう。
このサンプルアプリでは、ユーザーのメールアドレスが確認済みかどうかをアクティビティで表示しているだけですが、このステータスに応じてアプリの機能を制限したり、ログインが必要なセクションへのアクセスを禁止したりすることも可能です。
Google、Facebook、Twitter などの他のプロバイダを使ったログインなど、Firebase Auth の詳細は
Firebase デベロッパー サイトをご覧ください。
Posted by
Khanh LeViet - Developer Relations Team