kotlin 使用Firebase和Jetpack Compose进行Google身份验证

dddzy1tm  于 2022-11-25  发布在  Kotlin
关注(0)|答案(1)|浏览(145)

我正在使用Kotlin、Android Studio和Jetpack编写

我想做的事:

点击按钮后,我想使用google身份验证和firebase注册用户
"我一直在努力“
我试着跟随Firebase Auth Documentation,但这真的很难理解,因为它经常把我送回Google Documentation,这在Jetpack Compose的情况下也没有帮助。
我找不到任何最新的视频或指南来解释这个实现。如果有人能解释一下如何开始的话,那就太棒了。

5t7ly7z5

5t7ly7z51#

val context = LocalContext.current
val token = stringResource(R.string.default_web_client_id)
val launcherNav = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.StartActivityForResult()
) {
    navController.navigate(Screen.MainScreen.route)
}
val launcher = rememberLauncherForActivityResult(
    contract = ActivityResultContracts.StartActivityForResult(),
) {
    val task =
    try {
        val account = GoogleSignIn.getSignedInAccountFromIntent(it.data)
            .getResult(ApiException::class.java)
        val credential = GoogleAuthProvider.getCredential(account.idToken!!, null)
        FirebaseAuth.getInstance().signInWithCredential(credential)
            .addOnCompleteListener { task ->
                if (task.isSuccessful) {

                }
            }
    }
    catch (e: ApiException) {
        Log.w("TAG", "GoogleSign in Failed", e)
    }
}

Button(
    onClick = {
        val gso = GoogleSignInOptions
            .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(token)
            .requestEmail()
            .build()
        val googleSignInClient = GoogleSignIn.getClient(context, gso)
        launcher.launch(googleSignInClient.signInIntent)
    }
) {
    Text(text = "Sign In")
}

相关问题