Android で Firebase Authentication を使ってみる

アプリを Firebase に接続する

  1. Firebase SDK をインストールします
  2. Firebase コンソールでアプリを Firebase プロジェクトに追加します。

アプリに Firebase Authentication を追加する

Authentication の依存関係をアプリレベルの build.gradle ファイルに追加します。

  implementation 'com.google.firebase:firebase-auth:16.1.0'

認証プロバイダを使用するには、Firebase コンソールで認証プロバイダを有効にする必要があります。[Firebase Authentication] セクションの [ログイン方法] ページに移動して、[メール / パスワード]、アプリに必要なその他の ID プロバイダを有効にします。

現在の認証状態を確認する

  1. FirebaseAuth インスタンスを宣言します。

    Java
    Android

    private FirebaseAuth mAuth;

    Kotlin
    Android

    private lateinit var auth: FirebaseAuth
  2. onCreate() メソッドで、FirebaseAuth インスタンスを初期化します。

    Java
    Android

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    Kotlin
    Android

    // Initialize Firebase Auth
    auth = FirebaseAuth.getInstance()
  3. アクティビティを初期化するときに、ユーザーが現在ログインしているかどうかを確認します。

    Java
    Android

    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = mAuth.getCurrentUser();
        updateUI(currentUser);
    }

    Kotlin
    Android

    public override fun onStart() {
        super.onStart()
        // Check if user is signed in (non-null) and update UI accordingly.
        val currentUser = auth.currentUser
        updateUI(currentUser)
    }

新しいユーザーを登録する

メールアドレスとパスワードを取得する新しい createAccount メソッドを作成して検証し、[createUserWithEmailAndPassword](/docs/reference/android/com/google/firebase/auth/FirebaseAuth.html#createUserWithEmailAndPassword(java.lang.String, java.lang.String)メソッドで新しいユーザーを作成します。

Java
Android

mAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "createUserWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "createUserWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }

                // ...
            }
        });

Kotlin
Android

auth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "createUserWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "createUserWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }

            // ...
        }

メールアドレスとパスワードで新しいユーザーを登録するフォームを追加し、送信時にこの新しいメソッドを呼び出します。クイックスタート サンプルで例をご確認いただけます。

既存のユーザーをログインさせる

メールアドレスとパスワードを受け取る新しい signIn メソッドを作成して検証し、signInWithEmailAndPassword メソッドでユーザーをログインさせます。

Java
Android

mAuth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    // Sign in success, update UI with the signed-in user's information
                    Log.d(TAG, "signInWithEmail:success");
                    FirebaseUser user = mAuth.getCurrentUser();
                    updateUI(user);
                } else {
                    // If sign in fails, display a message to the user.
                    Log.w(TAG, "signInWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    updateUI(null);
                }

                // ...
            }
        });

Kotlin
Android

auth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Sign in success, update UI with the signed-in user's information
                Log.d(TAG, "signInWithEmail:success")
                val user = auth.currentUser
                updateUI(user)
            } else {
                // If sign in fails, display a message to the user.
                Log.w(TAG, "signInWithEmail:failure", task.exception)
                Toast.makeText(baseContext, "Authentication failed.",
                        Toast.LENGTH_SHORT).show()
                updateUI(null)
            }

            // ...
        }

メールアドレスとパスワードで新しいユーザーをログインさせるフォームを追加し、送信時にこの新しいメソッドを呼び出します。クイックスタート サンプルで例をご確認いただけます。

ユーザー情報にアクセスする

ユーザーが正常にログインした場合は、getCurrentUser メソッドでいつでもアカウント データを取得できます。

Java
Android

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // 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
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Kotlin
Android

val user = FirebaseAuth.getInstance().currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = user.displayName
    val email = user.email
    val photoUrl = user.photoUrl

    // Check if user's email is verified
    val emailVerified = user.isEmailVerified

    // 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
    // FirebaseUser.getToken() instead.
    val uid = user.uid
}

ProGuard を構成する(省略可)

アプリで ProGuard と一緒に Firebase Authentication を使用する場合、アプリが正常に機能するように proguard-rules.pro ファイルに次のフラグを追加します。

    -keepattributes Signature
    -keepattributes *Annotation*

次のステップ

他の ID や認証サービスの追加については、以下のガイドをご覧ください。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。