Почему я получаю com.google.android.gms.common.api.ApiException: 10:?

private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
    try {
        GoogleSignInAccount account = completedTask.getResult(ApiException.class); //exception is here

        // Signed in successfully, show authenticated UI.
        System.out.println("google token ---> " + account.getIdToken());
    } catch (ApiException e) {
        // The ApiException status code indicates the detailed failure reason.
        // Please refer to the GoogleSignInStatusCodes class reference for more information about this error.
        e.printStackTrace();
    }
}

Ответ 1

Если вы используете Firebase и попробуйте debug app:

1. Сначала получите ключ отладки SHA-1 :

  1. Нажмите на Gradle (на правой боковой панели вы увидите Gradle Bar)
  2. Нажмите на Tasks
  3. Нажмите на Android
  4. Двойной щелчок по signingReport (Вы получите SHA-1 и MD5)

2. Добавьте новые учетные данные в консоль API

  1. Перейдите по ссылке https://console.developers.google.com/apis/credentials.
  2. Создать новый OAuth Client ID
  3. Имя: Android client (for debug) (пример)
  4. Отпечаток сертификата подписи: скопируйте и вставьте ключ отладки SHA-1
  5. Введите название пакета, затем сохраните

3. Добавьте свой ключ в ваш проект Firebase :

  1. Перейдите в Project settingsSHA certificate fingerprints → Добавить ключ SHA-1 приложения отладки.

  2. Затем вы можете обновить файл google-services.json в своем проекте Android.

Меня устраивает.

Ответ 2

Этот код состояния означает, что вы предоставляете идентификатор клиента неизвестного сервера. В https://console.developers.google.com/apis/credentials в вашем проекте вам может потребоваться сгенерировать: идентификатор клиента OAuth → веб-приложение и использовать этот идентификатор клиента веб-приложения в приложении для Android.

Ответ 3

Код ошибки ApiException 10 является ошибкой разработчика. Вы получаете эту ошибку, когда ваше приложение Firebase не настроено должным образом. Один верный случай - когда вы не предоставляете отпечаток SHA1 для своего приложения для Android, когда хотите использовать аутентификацию Firebase с Google Signin. (Это требование для входа в Google). Поэтому предоставьте отпечаток SHA1, загрузите файл конфигурации google-services.json в папку своего приложения и выполните сборку. Тебе должно быть хорошо идти.

Вход в Google автоматически настраивается в подключенных iOS и веб-приложениях. Чтобы настроить вход в Google для своих приложений Android, необходимо добавить отпечаток SHA1 для каждого приложения в настройках проекта.

Проверьте это Общие коды ошибок состояния

Ответ 4

Если вы удалите эту строку, она будет работать:

System.out.println("google token ---> " + account.getIdToken());

Это потому, что у вас нет запроса к idToken:

.requestIdToken(getString(R.string.google_app_id))

где app_id будет иметь значение "Идентификатор клиента OAuth → Веб-приложение"

Ответ 5

Я решил эту проблему с помощью этих шагов:

1). Перейдите на страницу https://console.developers.google.com/ и удалите (клиент Android), если он создан.

2). Нажмите "Создать учетные данные", нажмите "OAuthClientID" и выберите "Android".

3). скопируйте и вставьте свой отпечаток SHA 1

4). введите название вашего пакета, затем сохраните

5). Перейти на console.firebase.com

6). скачать google-service.json переместить его в свой проект в каталог приложения

7). Откройте google-service.json, найдите тип идентификатора клиента 3 и используйте его как default_web_client_id.

8). Запустите ваше приложение