我们正在我们的移动应用程序中实现Google登录和后端服务器的身份验证。
Developer A有以下代码
val GOOGLE_OAUTH2_CLIENT_ID = "1234567890123-abcdef....apps.googleusercontent.com"
val gSignOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(GOOGLE_OAUTH2_CLIENT_ID)
.requestEmail()
.build()
val clientGoogleSignIn = GoogleSignIn.getClient(this, gSignOptions)
findViewById<Button>(R.id.welcome_get_started_button).setOnClickListener {
startActivityForResult(clientGoogleSignIn.signInIntent, RC_GOOGLE_SIGN_IN)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
{
super.onActivityResult(requestCode, resultCode, data)
try
{
if (requestCode == RC_GOOGLE_SIGN_IN)
{
val googleAccount = GoogleSignIn.getSignedInAccountFromIntent(data) // FAILING LINE
.getResult(ApiException::class.java)
googleAccount?.let {
log("D", "Google sign-in completed with ${it.email} and token ${it.idToken}")
processGSignInAndStartNextActivity(it)
}
}
}
catch (e: Throwable)
{
log("E", "onActivityResult failed", e)
}
}在Google > API >凭据页面中,我们有两个客户机ID:
由Android自己制作的SHA1 : Gradle > signingReport
每件事都是根据Google文档完成的,一切都正常。
现在开发人员B进来了.
他提取相同的代码并使用相同的调试配置。同样的Android版本,相同的Kotlin版本,同样的Google服务版本。他运行代码,并且它始终失败于
com.google.android.gms.common.api.ApiException: 10:
at com.google.android.gms.common.internal.ApiExceptionUtil.fromStatus(Unknown Source:4)
at com.google.android.gms.auth.api.signin.GoogleSignIn.getSignedInAccountFromIntent(Unknown Source:8)我们花了几个小时尝试了所有的东西--更改代码,卸载,不同的AVDs,不同的JVM版本,没有任何帮助。最后,我们决定他应该创建自己的Android令牌,因为它没有任何意义,所以为什么不呢?原来他的SHA1是由安卓工作室生成的.一旦他从那个SHA1创建了另一个客户机ID,代码就对他起作用了。现在我们有3个客户ID: Web,Android,Android。
是每个Android开发人员都应该用唯一的SHA1和客户端ID?对应用程序进行签名的预期行为。
我无法想象这对于大型团队是如何运作的。我相信我们在这里遗漏了一些东西,所以如果一个更有经验的人能启发我们,我会很感激的。谢谢你,祝你今天愉快。
发布于 2019-09-25 02:49:55
您可以从您的团队中复制调试密钥,并将其提供给所有团队成员。
调试Keystore应该位于~/.android/debug.keystore。
或者您可以创建另一个Keystore,并在开发人员之间共享它,并在gradle中手动设置它。
android {
// ...
signingConfigs {
debug {
storeFile file('../debug.keystore')
}
/*
for release:
release {
storeFile file('release.keystore')
storePassword "password"
keyAlias "alias"
keyPassword "alias_password"
}
*/
}https://stackoverflow.com/questions/58090367
复制相似问题