14

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

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

 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 конфигурационный файл в приложение/каталога и добавлены зависимости:

 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' 

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

ответ

15

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

В общем, некоторые вещи, чтобы проверить:

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

мое имя пакет и SHA1 регистрируются на консоли, я импортировал существующее приложение Google и я также включил файл JSON в каталоге приложения. Тем не менее я застрял с той же ошибкой. – SKen

+2

Пара проверок: проверьте, что они зарегистрированы как приложение ID клиента/подключиться, а не как ключ API. Кроме того, попробуйте проверить APK с помощью aapt, чтобы убедиться, что он действительно использует SHA1 и имя пакета, которое вы намеревались: иногда он может тянуть другое хранилище ключей, чем ожидалось, или правило градации настраивает имя пакета. –

+0

Я понимаю, что ваш ответ является наиболее вероятной причиной, тем более, что мой выпуск с другим хранилищем ключей работал отлично. Но мой debug ey был таким же, и никаких изменений ни в моем SHA1-ключе, ни в имени моего пакета. Я все еще не могу заставить его работать с отладочными сборками. – SKen

0

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

0

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

См. Firebase Android Codelab, чтобы добавить Атрибут Firebase Auth в файл приложения/build.gradle.

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

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

DEVELOPER_ERROR:

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

1

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

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

0

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

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

5

У меня была та же проблема. Случается, что у вас есть отладка 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 fingerprint of keystore certificate

Надеюсь, что он Ты помог мне.

+0

У меня была такая же ошибка, после того, как были исправлены проблемы с выпуском и отладки SHA1. –

+0

@jemomgebrishvili Не работает для меня –

+0

Вы спаситель, сбитый с небес. Большое вам спасибо @Ismael –

1

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

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 консоли приложения.

Теперь вы в порядке! ---- Надеюсь! помогает.

0

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

0

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

9

Если для вашего приложения включено Google Play App Signing, то перед публикацией он заменит ключ подписи выпуска на сервере googles. Вы можете проверить, включено ли оно из Google Play Console -> Release Management -> App Signing.

В моем случае мне пришлось скопировать SHA1 из раздела «Сертификат подписки на приложение» и добавить его в раздел общих настроек проектов Firebase, восстановить файл json, добавить его в проект и повторно загрузить apk, а также ошибка была решена.

+0

Это было для меня на 100%. У моего другого приложения нет «Подписи к подпискам», которые активируются через Google Play Console. Но по какой-то причине мой новый имеет - который изменяет SHA1 при загрузке/выпуске через Google Play. – Oakleaf

+0

Ты отличный !!! –

+0

Единственное решение, которое сработало для меня. –

1

Код ошибки 10 является постоянное значение CommonStatusCodes.DEVELOPER_ERROR, которое означает, что вы уже неверно отконфигурировали проект

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

  • чек, если ША из PlayStore консоли и Firebase консоли одинаковы.

    Копировать ША из 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(); 
Смежные вопросы