大家好
我目前正在致力于将 Google 登录集成到我的 Android 应用程序中。如提供的图像(用于上下文)所示,我的目标是实现特定的用户流程,并且我已经成功地实现了它。然而,我遇到了一个挑战:选择帐户时,系统会自动继续创建帐户,而不会显示同意屏幕,无论用户是新用户还是现有用户。
此行为跳过了用户体验中的关键步骤,即在创建帐户或登录之前应告知用户正在共享的数据并同意该数据。我正在寻求有关如何确保在 Google 登录过程中向用户正确显示同意屏幕的指导。
代码:
fun signInWithGoogle(activity: Activity, requestCode: Int) {
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(CLIENT_ID)
.requestEmail()
.build()
val googleSignInClient = GoogleSignIn.getClient(activity, gso)
val signInIntent = googleSignInClient.signInIntent
activity.startActivityForResult(signInIntent, requestCode)
}
private fun googleSignIn() {
binding.googleSigninButton.setOnClickListener {
EffectAnimation.bounceAnimation(it)
val requestCode = GOOGLE_SIGN_IN_REQUEST_CODE
loginViewModel.signInWithGoogle(this, requestCode)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == GOOGLE_SIGN_IN_REQUEST_CODE) { // The same request code you passed to signInWithGoogle
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
val account = task.getResult(ApiException::class.java)!!
loginViewModel.firebaseAuthWithGoogle(account.idToken!!)
} catch (e: ApiException) {
}
}
}
注意:不是完整的代码。只是一个概述
我正在努力在用 Kotlin 开发的 Android 应用程序中使用 Google 登录来实现特定流程。我设想的过程如下:
提示用户选择 Google 帐户。 对于新用户,显示同意屏幕,详细说明所共享的信息(如附图所示)。 尽管我花了两天时间来解决这个问题并彻底审查了文档,但我尚未成功实现此流程。我的应用程序已经链接到 Google Cloud Platform,并且我已经配置了 OAuth 同意屏幕,但似乎有些问题。
我非常感谢社区的任何见解或指导。预先感谢您的协助。
P.S.:对于任何混乱,我们深表歉意;我决心解决这个问题,但遇到了障碍。
您的项目中是否包含 SHA1 和 SHA256 密钥?
如果没有,您需要从 Firebase 上的“项目概述”部分添加它们。
Firebase 概述 -> 项目设置 -> 常规 -> 添加指纹