Подтвердить что ты не робот

Android Google SignIn не работает в режиме отладки: GoogleSignInResult является ложным

Я следую этому руководству, чтобы запустить Google SignOn: https://developers.google.com/identity/sign-in/android/start-integrating

Когда я запускаю свое приложение локально с помощью виртуального устройства, он отлично работает, но когда я развертываю его на своем устройстве с помощью отладки или создаю подписанный файл jar и копирую его вручную GoogleSignInResult всегда возвращает false с помощью INTERNAL ERROR.

Я изо всех сил пытаюсь использовать google login при развертывании приложения с помощью отладки на моем устройстве. Любая помощь очень ценится!

Решение для моего вопроса:

Где вы загружаете json файл, вам нужно скопировать код, который вы можете создать с помощью инструмента Java. Я пропустил это несколько раз подряд.

4b9b3361

Ответ 1

Вероятно, вам не хватает регистрации консоли. Очень распространенные разработчики будут иметь несколько конфигураций сертификата подписки: хранилище отладочных ключей, сертификат сертификации среды тестирования, сертификат подписи продукции. Подписание сертификата SHA1 + имя пакета однозначно идентифицирует клиента Android и его необходимо зарегистрировать отдельно в dev-консоли.

См. ниже blogpost, чтобы узнать больше о регистрации клиентов OAuth:

http://android-developers.blogspot.com/2016/03/registering-oauth-clients-for-google.html

Или см. этот пост: Тестирование входа Google на Android в фазе развития

Ответ 2

У меня была та же проблема, и это произошло из-за

apply plugin: 'com.google.gms.google-services'

не находится в нижней части приложения build.gradle.

Выяснил это, посмотрев консоль Gradle. Ошибок не было.

Ответ 3

EDITED

Ответ получен из этого, поскольку он применим и для этой проблемы.

Я прилагаю здесь ответ

Проблема связана с сертификатом подписи и отпечатком сертификата SHA-1. Добавьте в свои учетные данные googleApi следующие сертификаты SHA-1. есть 2 случая

1. Если вы работаете в режиме отладки, добавьте отпечаток SHA-1, сгенерированный следующими

"C:\Program Files\Java\jre1.8.0_101\bin\keytool" -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

2.Если вы настроили Configing Config, используйте SHA-1 отпечаток, созданный с помощью

"C:\Program Files\Java\jre1.8.0_101\bin\keytool" -list -v -keystore "[youKeyPath]\youKey.jks"

Я рекомендую вам добавить оба отпечатка SHA-1 в ваши учетные данные googleApi

Ответ 4

Причиной может быть: - Вы можете использовать unsigned apk для тестирования вашего приложения.

Перейдите в Build- > Generate Signed APK → подпишите его с помощью ключа, который вы использовали для получения вашего отпечатка пальца SHA1, чтобы сделать clientID на консоли разработчика Google.

Запустите приложение-debug.apk и сделайте это!

Ответ 5

В дополнение к приведенным выше ответам я столкнулся с одним случаем, когда проблема была вызвана из-за конфигурации, которая была несовместима с файлом google-services.json:

Также возможно, что clientId был специально назначен в GoogleSignInOptions Builder, как показано ниже:

    String serverClientId = "xxxxx-yyyy.apps.googleusercontent.com";
    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .requestIdToken(serverClientId)
            .build();

Если это так, можно удалить ссылку на serverClientId и запрос requestIdToken, как показано ниже:

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();

Тогда это будет зависеть от google-services.json в отличие от жестко заданного значения во время конфигурации.

Надеюсь, это избавит кого-то еще от неприятностей, которые я пытался диагностировать в своем проекте.