LoginSignup
4
1

More than 3 years have passed since last update.

[Android] Firebase Authentication使ってみた

Last updated at Posted at 2020-09-13

今月はFirebaseを触りまくるぞってことで、Firebase Authenticationを使用してみた

Firebase設定

公式を参考にプロジェクトの作成とアプリの追加を行った。
1. Firebaseにログインし、プロジェクトを作成します。
2. Android Studioでアプリのプロジェクトを作成
3. 作成したプロジェクトにアプリを追加します。公式参照
4. 実装

1、2については詰まることはないと思うので省きます。3で少し躓くかもしれないのでここから説明していきます。
作成したプロジェクト画面のプロジェクト概要で、以下の様なアプリ追加のボタンがありますので、こちらから追加していきます。

追加するアプリはAndroidを選択すると、

こちらの画面が開くと思います。ここでAndroidパッケージ名を入力するため、予めアプリを作成しておいてください。
デバッグ用の著名証明書は省略可能ですが、ログイン認証で必要になってくると思うので、Firebase Authenticationを使用する際は設定しなければなりません(多分)。こちらを参考にコマンドを叩けくだけです。

keytool -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore

OR

./gradlew signingReport

1つ目のコマンドを叩くとキーストアのパスワードを求められますが、デバック用のキーストアのパスワードは、androidです。後は、説明通りに進めていけば追加できます(説明がとても丁寧なので省きます)。最後にアプリとの接続を確認するフェーズがあるので、そこで待機しておく(しなくてもいい)。

実装

Gralde

gradle.xml
// Project
dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.3.3'
    }

// App
apply plugin: 'com.google.gms.google-services'
dependencies {
    // ...
    // Firebase
    implementation 'com.google.firebase:firebase-auth-ktx:19.4.0'
    implementation 'com.google.firebase:firebase-analytics:17.5.0'
    implementation 'com.google.firebase:firebase-core:17.5.0'

}

ここで一旦ビルドすると、接続の確認がとれるはず

機能実装

認証状況

FirebaseAuthをインスタンス化します。

class LoginActivity : AppCompatActivity() {

    private lateinit var auth: FirebaseAuth

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)

        auth = Firebase.auth
       // ...

    }

現在の認証状況を確認するためには、FirebaseAuthcurrentUserを取得することにより確認することができます。アプリ起動時にすでに認証済みの場合は、ログイン画面からログアウト画面に遷移するようにしました。

    override fun onStart() {
        super.onStart()
        val currentUser = auth.currentUser
        if (currentUser != null) LogoutActivity.start(this)
    }

新規登録

メールアドレスとパスワードを使い新規登録する場合は、auth.createUserWithEmailAndPassword()を使用します。入力されたメールアドレスとパスワード使って新規登録されます。

    private fun createAccount(email: String, password: String) {

        auth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    Log.d(TAG, "createUserWithEmail:success")
                    LogoutActivity.start(this)
                } else {
                    Log.w(TAG, "createUserWithEmail:failure", task.exception)
                    Toast.makeText(
                        this, "Authentication failed.",
                        Toast.LENGTH_SHORT
                    ).show()
                }
            }
    }

ログイン

すでに登録されているメールアドレスとパスワードを使ってログインする場合、auth.signInWithEmailAndPassword()を使用します。

    private fun signIn(email: String, password: String) {

        auth.signInWithEmailAndPassword(email, password)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    Log.d(TAG, "signInWithEmail:success")
                    LogoutActivity.start(this)
                } else {
                    Log.w(TAG, "signInWithEmail:failure", task.exception)
                    Toast.makeText(
                        this, "Authentication failed.",
                        Toast.LENGTH_SHORT
                    ).show()
                }
            }
    }

ログアウト

    private fun signOut() {
         auth.signOut()
    }
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1