Моя текущая реализация входа в Google выглядит следующим образом:
private fun googleLogin() {
LoginManager.googleSignOut(this)
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.server_client_id))
.requestEmail()
.build()
val signInClient = GoogleSignIn.getClient(this, gso)
val signInIntent = signInClient.signInIntent
startActivityForResult(signInIntent, LoginManager.Account.GOOGLE.code)
}
При этом получатель результатов выглядит следующим образом:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
Trace.i(resultCode)
when (requestCode) {
LoginManager.Account.GOOGLE.code -> {
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
handleGoogleResult(task)
}
}
}
private fun handleGoogleResult(completedTask: Task<GoogleSignInAccount>) {
try {
val account = completedTask.getResult(ApiException::class.java)
preLogin(LoginManager.Account.GOOGLE, account?.idToken)
} catch (e: ApiException) {
if (e.statusCode != GoogleSignInStatusCodes.SIGN_IN_CANCELLED) {
tryTo(LogType.E, true) {
LoginManager.setLoginResult(this, LoginManager.LogStatus.FAILED, "Failed to Login")
finish()
}
}
Trace.e(e)
Crashlytics.logException(e)
}
}
private fun handleGoogleResult(completedTask: Task<GoogleSignInAccount>) {
try {
val account = completedTask.getResult(ApiException::class.java)
preLogin(LoginManager.Account.GOOGLE, account?.idToken)
} catch (e: ApiException) {
if (e.statusCode != GoogleSignInStatusCodes.SIGN_IN_CANCELLED) {
tryTo(LogType.E, true) {
LoginManager.setLoginResult(this, LoginManager.LogStatus.FAILED, "Failed to Login")
finish()
}
}
//Log.i("e_status_code", e.);
e.printStackTrace()
Trace.e(e)
Crashlytics.logException(e)
}
}
Проблема в том, что он возвращает ошибку 12500со следующим журналом прямо перед исключением:
===== INTEGER =====
value : 0
NTZ_TABLE : [B@3bdafa63
SMALL_VALUES : [Ljava.lang.Integer;@13f25719
TYPE : int
MAX_VALUE : 2147483647
MIN_VALUE : -2147483648
SIZE : 32
===== end =====
Что это значит?
Смежный вопрос: из других ошибок, связанных с ошибкой 12500, я могу предположить, что это в основном проблема SHA1 в Keystore.или устаревшая проблема служб Google Play.Что еще может вызвать эту ошибку?