Вход в Google Android с Firebase - statusCode DEVELOPER_ERROR

Я пытаюсь внедрить логин Google в моем подключенном к Firebase приложении для Android. Когда я запускаю приложение и нажимаю кнопку входа в Google - ничего не происходит. И я получаю эту ошибку в onActivityResult: Статус {statusCode = DEVELOPER_ERROR, разрешение = null}.

Мой код выглядит следующим образом:

     protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_CODE_GOOGLE_LOGIN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

        if (result.isSuccess()){
            GoogleSignInAccount account = result.getSignInAccount();
            String emailAddres = account.getEmail();
            getGoogleQAuthToken(emailAddres);
        }
    }
}

         private void getGoogleQAuthToken(final String emailAddres){
             AsyncTask<Void,Void,String> task = new AsyncTask<Void, Void, String>() {
                 String errorMessage = null;

                 @Override
                 protected String doInBackground(Void... params) {
                     String token = null;
                     try {
                         String scope = "oauth2:profile email";
                         token = GoogleAuthUtil.getToken(MainActivity.this, emailAddres, scope);
                     } catch (IOException transientEx) {

                         errorMessage = "Network error: " + transientEx.getMessage();
                     } catch (UserRecoverableAuthException e) {
                         Intent recover = e.getIntent();
                         startActivityForResult(recover, MainActivity.REQUEST_CODE_GOOGLE_LOGIN);
                     } catch (GoogleAuthException authEx) {
                         errorMessage = "Error authenticating with Google: " + authEx.getMessage();
                     }
                     return token;
                 }

Я добавил файл конфигурации JSON в каталог app/и добавил зависимости:

     buildscript {
repositories {
    jcenter()
}

dependencies {
    classpath 'com.google.gms:google-services:1.5.0-beta2'
}
     }


     dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.1.+'
compile 'com.firebase:firebase-client-android:2.3.0+'

/* For Google Play Services */
compile 'com.google.android.gms:play-services-safetynet:8.3.0'
compile 'com.google.android.gms:play-services-auth:8.3.0'
compile 'com.google.android.gms:play-services:8.3.0'

compile('com.afollestad.material-dialogs:core:[email protected]') {
    transitive = true
}

/* Firebase UI */
compile 'com.firebaseui:firebase-ui:0.2.2'

compile 'com.android.support:cardview-v7:23.1.+'
compile 'com.android.support:recyclerview-v7:23.1.+'
compile 'com.android.support:design:23.1.+'


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

Я ищу часы решения уже... Пожалуйста, помогите!

Ответ 1

DEVELOPER_ERROR означает, что сервисам Google Play не удалось найти подходящего клиента из консоли на основе вашего SHA1 и имени пакета. Вы можете добавить SHA1 на странице настроек в консоли Firebase для заданного имени пакета или добавить новое имя пакета с помощью кнопки "Добавить Firebase в приложение Android".

В общем, некоторые вещи для проверки:

  • Убедитесь, что имя вашего пакета соответствует ожидаемому, например, оно указано в вашем build.gradle и не переопределяется в варианте сборки или во внешнем виде продукта.
  • Убедитесь, что вы зарегистрировали отладку и отпустите ключи SHA1 в консоли.

Ответ 2

Если для вашего приложения включена подпись приложения Google Play, то перед публикацией он заменит ваш ключ подписи релиза на ключ на сервере Google.

Вы можете проверить, включен ли он из: Google Play Console → Release Management → App Signing.

В моем случае для устранения ошибки мне пришлось:

  1. скопируйте SHA1 из раздела "Сертификат подписи приложения"
  2. добавьте его в раздел общих настроек проектов Firebase
  3. восстановить файл JSON
  4. добавить его в проект
  5. перезагрузите апк

Ответ 3

Код ошибки 10 - это постоянное значение CommonStatusCodes.DEVELOPER_ERROR которое означает, что вы неправильно настроили свой проект

Что ты можешь сделать

  • проверьте, совпадают ли SHA из консоли PlayStore Console и Firebase Console.

    Скопируйте SHA из консоли Google Play

    enter image description here

вставьте его в консоль Firebase

enter image description here

Что еще можно сделать?

Отображать значимые сообщения в простом английском случае сбоя

          // Google Sign In failed, update UI appropriately
            Log.w(TAG, "Google sign in failed", e);

            String messageToDisplay = "Authentication failed.";
            switch (e.getStatusCode()) {
                case CommonStatusCodes.API_NOT_CONNECTED: //17
                    messageToDisplay += "The client attempted to call a method from an API that failed to connect.";
                    break;

                case CommonStatusCodes.DEVELOPER_ERROR: //10
                    messageToDisplay += "The application is misconfigured.";
                    break;

                case CommonStatusCodes.ERROR: //13
                    messageToDisplay += "The operation failed with no more detailed information.";
                    break;

                case CommonStatusCodes.INTERNAL_ERROR: //8
                    messageToDisplay += "An internal error occurred.";
                    break;

                case CommonStatusCodes.INVALID_ACCOUNT: //8
                    messageToDisplay += "Invalid account name specified.";
                    break;

                case CommonStatusCodes.SIGN_IN_REQUIRED: //8
                    messageToDisplay += "Please Sign In to continue.";
                    break;
            }

            Toast.makeText(LoginActivity.this, messageToDisplay,
                    Toast.LENGTH_SHORT).show();

Ответ 4

У меня была та же проблема. Случается, что у вас есть отладка SHA1 и выпуск SHA1. Обычно мы использовали только SHA1 Debug и генерировали .apk, подписанный для игры в google, но когда мы используем google sigin, вы должны ввести выпуск firebase SHA1.

Для просмотра выпуска SHA1 используйте следующую команду:

 keytool -list -v -keystore C:\ProjectsData\keystore\my-release-key.keystore -alias alias_name 

Затем введите этот SHA1 на Firebase

https://support.google.com/firebase/answer/7000104

Этот ответ SHA1:

Отпечаток SHA-1 сертификата хранилища ключей

Надеюсь, я тебе помог.

Ответ 5

Я создал новый ключ отладки SHA1, выполнив следующие шаги и заменив ключ SHA1 в моих настройках проекта. это сработало для меня.
-Откройте свой проект.
-Нажмите "Меню" Файл "- > " Создать "- > Нажмите" Google "- > " Выбрать действие в Google Картах "- > " Нажмите "Готово". -Android studio будет генерировать автоматический файл google_maps_api.xml.
-Вы можете получить отладочный SHA1-ключ в этом файле.

Замените этот ключ SHA1 в настройках проекта, затем загрузите новый google-services.json из параметров и замените его в проекте, так как ваш сертификат_hash и client_id изменится.

Ответ 6

У меня была такая же проблема, и я получил ее работу, выполнив следующие шаги:

1. Добавьте отпечаток DEBUG_KEYSTORE SHA1 к проекту firebase. используйте следующую команду (MAC/LINUX)

keytool -exportcert -list -v \-alias androiddebugkey -keystore ~/.android/debug.keystore  

2. Теперь создайте подписанный apk вашего проекта. Процесс включает создание хранилища ключей для версии вашего приложения. Скопируйте путь только что созданного файла .jks.

3. Теперь создайте отпечаток RELEASE_KEYSTORE SHA1, используя следующую команду

keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

4. Скопируйте новый SHA1 с выхода и добавьте его как еще один отпечаток SHA1 в консоль приложений Firebase.

Теперь вам хорошо идти! ---- Надеюсь! это помогает.

Ответ 7

Думаю, вам нужно изменить версию игрового сервиса.

Смотрите Firebase Android Codelab, чтобы добавить зависимость Firebase Auth к вашему файлу app/build.gradle.

Попробуйте обновить свою play-службу в gradle, как показано ниже:

/* For Google Play Services */
...
compile 'com.google.android.gms:play-services:9.0.0'
...

DEVELOPER_ERROR:

Приложение неправильно сконфигурировано. Эта ошибка не восстанавливается и будет считаться фатальной. После этого разработчик должен следить за журналами, чтобы определить более эффективную информацию.

Ответ 8

При создании ключа OAuth вам необходимо убедиться, что вы даете правильное имя пакета. Это означает имя пакета, которое входит в ваш файл манифеста.

Если вы используете несколько модулей (например, какую-то библиотеку, например FirebaseUI-Android), убедитесь, что при создании ключа вы используете имя пакета, с которого вы запрашиваете аутентификацию Google.

Ответ 9

У меня была такая же проблема. После двух дней боли я заметил, что мой выпуск SHA1 был инцектным (я использовал его, используя keytool в java/bin, и это дало мне плохой SHA1. Возможно, потому что теперь Android Studio использует собственный пакет java, а не JDK), Лучший способ получить здесь SHA1 SHA-1 отпечаток ключа хранилища ключей

Ответ 10

Нажмите здесь (руководство для разработчиков Google) и создайте новый проект для консоли Firebase. Эта ссылка установлена с настройками по умолчанию, поэтому вам не нужно добавлять ее вручную

Ответ 11

Была та же проблема. Но отлично работал после того, как я очистил и перестроил проект.: D