📌  相关文章
📜  Kotlin Android Firebase身份验证-Google登录(1)

📅  最后修改于: 2023-12-03 15:17:09.175000             🧑  作者: Mango

Kotlin Android Firebase身份验证-Google登录

在Android开发中,身份验证是非常重要的一环。Firebase为我们提供了简单而强大的身份验证解决方案。其中Google登录是一个常见的身份验证方式。在本文中,我们将使用Kotlin语言来实现Firebase的Google登录。

前提条件

在开始之前,您需要完成以下设置:

  1. 创建一个Firebase项目并配置您的Android应用程序。
  2. 在Firebase控制台中启用Google身份验证。
  3. 在Firebase控制台中下载并添加您的应用程序的“google-services.json”文件。
步骤1:添加Firebase身份验证依赖项

在app级别的build.gradle文件中添加以下依赖项:

implementation 'com.google.firebase:firebase-auth-ktx:21.0.1'
步骤2:配置Google登录

在Firebase控制台中,转到“身份验证”>“授权方法”>“Google”并启用Google登录。确保在“项目设置”>“Android应用”中添加了您的应用程序并下载了google-services.json文件。

步骤3:实现Google登录

在MainActivity中添加以下代码:

private val RC_SIGN_IN = 9001 // 用于google登录的请求码

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

    signInButton.setOnClickListener {
        googleSignIn()
    }
}

private fun googleSignIn() {
    val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build()

    val googleSignInClient = GoogleSignIn.getClient(this, gso)
    val signInIntent = googleSignInClient.signInIntent
    startActivityForResult(signInIntent, RC_SIGN_IN)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == RC_SIGN_IN) {
        val task = GoogleSignIn.getSignedInAccountFromIntent(data)
        try {
            val account = task.getResult(ApiException::class.java)
            firebaseAuthWithGoogle(account.idToken!!)
        } catch (e: ApiException) {
            Log.w(TAG, "Google sign in failed", e)
            // handle failure here
        }
    }
}

private fun firebaseAuthWithGoogle(idToken: String) {
    val credential = GoogleAuthProvider.getCredential(idToken, null)
    FirebaseAuth.getInstance().signInWithCredential(credential)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    Log.d(TAG, "signInWithCredential:success")
                    val user = FirebaseAuth.getInstance().currentUser
                    // handle successful login here
                } else {
                    Log.w(TAG, "signInWithCredential:failure", task.exception)
                    // handle failure here
                }
            }
}
步骤4:实现退出登录

在MainActivity中添加以下代码:

private fun googleSignOut() {
    FirebaseAuth.getInstance().signOut()

    val googleSignInClient = GoogleSignIn.getClient(this, GoogleSignInOptions.DEFAULT_SIGN_IN)
    googleSignInClient.signOut().addOnCompleteListener(this) {
        // handle successful sign out here
    }
}
结论

在本文中,我们已经学习了如何使用Kotlin和Firebase实现Google登录和退出登录。Firebase身份验证是非常强大,灵活和易于使用的身份验证库。使用Firebase身份验证,我们可以轻松地添加多种身份验证方案到我们的应用程序中,使用Google登录方案仅仅是其中之一。