📅  最后修改于: 2023-12-03 15:17:09.175000             🧑  作者: Mango
在Android开发中,身份验证是非常重要的一环。Firebase为我们提供了简单而强大的身份验证解决方案。其中Google登录是一个常见的身份验证方式。在本文中,我们将使用Kotlin语言来实现Firebase的Google登录。
在开始之前,您需要完成以下设置:
在app级别的build.gradle文件中添加以下依赖项:
implementation 'com.google.firebase:firebase-auth-ktx:21.0.1'
在Firebase控制台中,转到“身份验证”>“授权方法”>“Google”并启用Google登录。确保在“项目设置”>“Android应用”中添加了您的应用程序并下载了google-services.json文件。
在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
}
}
}
在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登录方案仅仅是其中之一。