Некоторые пользователи моего приложения получают
com.google.android.gms.common.api.ApiException: 12501
и
com.google.android.gms.common.api.ApiException: 7
Но я не смог воспроизвести эти ошибки, потому что на моем устройстве все работает (отладочная и выпускная версии), у меня естьправильные ключи SHA1 настроены в консоли Firebase и использовали правильный веб-идентификатор клиента OAUTH.Я знаю это, потому что аутентификация работает для большинства пользователей, включая меня.Прямо сейчас из-за ошибок в моем коде приложение не обрабатывает эти случаи должным образом, но я не понимаю, что означают эти коды, почему они появились для 150 пользователей и как правильно их обрабатывать.Я искал похожие темы, но не нашел решений для частично работающих регистраций в Google.
Мой GoogleCallbackManager:
class GoogleCallbackManager {
var gsOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestServerAuthCode("....apps.googleusercontent.com")
.build()
var gsoClient: GoogleSignInClient? = null
var callback: AuthCallback<Task<GoogleSignInAccount>>? = null
fun createClient(activity: Activity) {
gsoClient = GoogleSignIn.getClient(activity, gsOptions)
}
fun registerCallback(callbackArg: AuthCallback<Task<GoogleSignInAccount>>) {
callback = callbackArg
}
fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
try {
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
task.addOnCompleteListener {
callback?.onSuccess(task)
}
task.addOnCanceledListener {
callback?.onCancel()
}
task.addOnCanceledListener {
callback?.onError()
}
} catch (e: ApiException) {
Sentry.capture(e)
callback?.onError()
}
}
}
AuthDialog
googleLoginButton.setOnClickListener {
val intent = googleCallbackManager.gsoClient?.signInIntent
activity?.startActivityForResult(intent, AuthHelper.RC_GOOGLE)
}
MainActivity onActivityResult, который выбирает один из трех возможных методов авторизации:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
CallbackManagerImpl.RequestCodeOffset.Login.toRequestCode() -> {
viewModel.fbCallbackManager.onActivityResult(requestCode, resultCode, data)
}
AuthHelper.RC_GOOGLE -> {
viewModel.googleCallbackManager.onActivityResult(requestCode, resultCode, data)
}
else -> {
if (!viewModel.vkCallbackManager.onActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data)
}
}
}
build.gradle
implementation 'com.google.android.gms:play-services-gcm:16.1.0'
implementation 'com.google.android.gms:play-services-auth:16.0.1'