Иногда 12501 и 7 ошибок входа в Google (SHA-1 и OAuth ID настроены правильно) - PullRequest
0 голосов
/ 04 июля 2019

Некоторые пользователи моего приложения получают

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...