«Произошла внутренняя ошибка» с интеграцией входа в Google Plus

Я пытаюсь интегрировать Google plus Login в свое приложение в соответствии с инструкцией, приведенной по следующей ссылке: https://developers.google.com/+/quickstart/android#install-sdk

Я полностью следую всем инструкциям. И когда я запускаю образец приложения на реальном устройстве, представленном в android-sdk, и нажимаю кнопку « signin , он отображает сообщение Toast, что An internal error occurred

Что я делаю не так?

Это может произойти, если вы не установили подпись для идентификатора клиента в проекте консоли API или не скопировали неправильное значение ключа из keytool. Это описано на этапах краткого руководства по началу работы на шагах 7, 8, 9 и 10.

У меня есть эта проблема и даже после создания 10 разных идентификаторов клиентов с разными SHA и именем пакета, это не работает … пока я не узнал, что вы должны заполнить Consent screen .

Согласно GoogleDevelopers Console –

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

Экран согласия

Я решил проблему, удалив .setScopes("PLUS_LOGIN") в PlusClient.Builder.

Я получил эту ошибку сообщения об ошибке в моем приложении для Android:

 An internal error occurred 

Резюме:

Предполагая, что вы допустили ошибку, настраивая переговоры между вашим приложением android и сервером Android API, предоставляющим вам доступ. Скорее всего, это связано с тем, что вы не добавляете правильное имя пакета или не корректируете отпечаток SHA1. Я выполнил следующие шаги, чтобы продуть неправильную конфигурацию и сделать все правильно.

Шаги для исправления:

  1. Перейдите в консоль google api и войдите в систему: https://code.google.com/apis/console

  2. Перейдите на вкладку «Доступ к API».

  3. Нажмите кнопку «Создать другой идентификатор клиента».

  4. Выберите: «Установленное приложение».

  5. Выберите: переключатель «Android».

  6. Введите имя пакета приложения Android, отображающее указанную выше ошибку. Его можно найти в верхней части PlusSampleActivity.java кода PlusSampleActivity.java . Для меня это com.google.android.gms.samples.plus

  7. Приобретите свое значение отпечатка SHA1:

    а. Используйте команду keytool -list -v -keystore /home/el/.android/debug.keystore . Введите пароль, если вы его никогда не устанавливали, пароль по умолчанию – «android».

    б. На экране отображается отпечаток SHA1, скопируйте его.

  8. Вставьте указанное выше значение в поле «Отпечаток сертификата подписчика (SHA1):».

  9. Нажмите кнопку «Создать идентификатор клиента».

  10. Запустите приложение для Android, нажмите «Войти».

Теперь вам предоставляется действие «Войти в Google+ SDK с Google».

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

Я искал, как исправить это в течение дня с полным исследованием без удачи, наконец, мне удалось решить эту проблему с помощью следующего подхода.

Прежде чем я начну разрешать это (по крайней мере, как ti работал для меня), я должен сказать, что все в документации правильное, и вам не нужно менять какие-либо строки кода или так далее. Это похоже на ошибку в https://cloud.google.com/console облачной консоли

Сначала убедитесь, что вы получили правильный SHA1 и имя вашего проекта, как описано в документации https://developers.google.com/+/quickstart/android

Теперь эта ошибка, как я заметил (по крайней мере для меня), заключалась в том, что в моей облачной консоли проект, который я создал, был давным-давно со старым интерфейсом, и несколько месяцев назад я перешел на новый GUI. Как только вы получите новый облик в облаке консоль вы заметите, что в новых проектах есть автоматически сгенерированный идентификатор проекта, подобный этому atlantean-ares-331, тогда как старые проекты получили длинное целочисленное значение как идентификатор проекта, который не отображается . Поэтому, если ваш проект был создан со старым графическим интерфейсом, и вы только что создали новый идентификатор клиента для OAuth для этого проекта, вы получите Toast «Внутренняя ошибка» при попытке войти в систему с Google.

Как исправить

  1. Перейти к облачной консоли
  2. Создайте новый проект, я бы предложил название типа oldprojectname-gplus
  3. В разделе «API» включить API Google+
  4. Убедитесь, что ни один из ваших проектов не имеет того же имени пакета в OAuth Client ID с тем, которое вы будете использовать сейчас, иначе вы получите сообщение об ошибке. This client ID is globally unique and is already in use (вам придется удалить старый идентификатор клиента OAuth с тем же именем пакета, которое вы будете использовать сейчас).

  5. Перейдите в учетные данные. Создайте новый идентификатор клиента для OAuth.

Установленное приложение

Android

Введите имя пакета вашего проекта и ваш SHA1

Готово

Мое решение проблемы было следующим.

Я сделал все, что рекомендовал другие, и не было опечаток относительно имени пакета и ключа SHA1. Я также попытался удалить ключ, а затем добавить его снова, но это не помогло.

Что помогло удалить ключ и создать новый проект ( https://code.google.com/apis/console ), а затем снова создать идентификатор клиента (с пакетом + sha1). После этого (5 секунд) все работало на моем устройстве Android.

Эта проблема связана с разрешениями с консоли api.

если вы используете разрешение, связанное с SCOPE_PLUS_LOGIN, в консоли api вы должны создать два ключа: один для идентификатора клиента OAuth и другие для общедоступного ключа api.

В моем случае проблема заключалась в том, что я изменил имя пакета приложения и не обновлялся в dev-консоли.

Для меня это было то, что я пытался использовать свой производственный ключ при его установке с помощью моего отладочного ключа. Убедитесь, что вы используете правый SHA1 из правого хранилища ключей.

Я обернулся к Google IO 2013 и изменил инициализацию PlusClient, затем он работает.

 public static final String AUTH_SCOPES[] = { Scopes.PLUS_LOGIN, "https://www.googleapis.com/auth/userinfo.email", "https://www.googleapis.com/auth/developerssite" }; mPlusClient = new PlusClient.Builder(this, this, this) .setScopes(AUTH_SCOPES) .build(); 

Спасибо Thano за решение «Теперь эта ошибка, как я заметил (по крайней мере для меня), заключалась в том, что в моей облачной консоли проект, который я создал, был давно со старым интерфейсом, и несколько месяцев назад я перешел на новый GUI. получите новый вид на облачной консоли, вы заметите, что в новых проектах есть автогенерированный идентификатор проекта, такой как этот atlantean-ares-331, в то время как старые проекты получили длинное целочисленное значение как идентификатор проекта, который не отображается. Поэтому, если ваш проект был создан с помощью старый GUI, и вы только что создали новый идентификатор клиента для OAuth для этого проекта, вы получите Toast «Произошла внутренняя ошибка» при попытке входа в Google. »

Воспроизведение проекта в Google Консоле работало для меня после нескольких других попыток:

По какой-либо причине у моего проекта не было идентификатора проекта (старая консоль / новая консоль?).

Как предложил Thano (выше), я создал совершенно новый проект, создал идентификаторы клиентов, … и затем работал. Спасибо за совет!!

Не забудьте использовать встроенное хранилище отладки для тестирования. У меня было все, что работала правильно, но я установил свой производственный отпечаток SHA1 хранилища в Credentials в Консоли разработчиков, что заставило его не работать.

Если вы столкнулись с этой ошибкой при попытке запустить образец приложения «или» скопируйте проект, который вы создали на другом компьютере, который успешно работал в нем, и выдает такую ​​всплывающую ошибку на другом компьютере, на котором вы пытаетесь запустить, вы можете следовать приведенному ниже методу, и это поможет.

Если вы создаете приложение для тестирования / отладки,

1. Создайте новый SHA1, если вы скопируете проект и запустите его на другой машине для имени пакета и пути, предоставленного для хранилища ключей.

2.Измените ClientId в консоли разработчиков для нового сгенерированного SHA1 и запустите его на новом компьютере, где вы скопировали проект и пытались его запустить.

Что-то часто упускается из вида – это имя пакета. Я хотел бы пояснить шаг 6 Эрика Лещински выше (не могу прокомментировать там): требуемый пакет – это не пакет действия, а скорее пакет манифеста вашего приложения.

Вы можете получить правильное значение из корневого элемента AndroidManifest.xml:

  

В этом примере определите «com.ntk.darkmoor» при создании идентификатора клиента

У меня была такая же проблема, когда я использовал SHA1 для debug.keystore для отладки, а затем экспортировал мое приложение, забыв создать SHA1 для хранилища ключей, которое я использовал для экспорта моего приложения.

Он работает для меня, когда я подключаю устройство и устанавливаю apk из Android Studio. Но теперь он работает для меня, когда я создаю .apk и устанавливаю его из dropbox.

Я просмотрел все ответы, представленные здесь, и другие. В моем случае проблема была также SHA-1. Причина, по которой я получил неправильный SHA-1, – это моя команда certtool export cert.

Раньше я использовал

 C:\Users\mysuername\.android SHA 1 signature keytool -exportcert -alias androiddebugkey -keystore "keystorepath" -list -v 

Проблема была в переменной androiddebugkey. Здесь вы должны указать имя ключа, который вы используете для подписания приложения.

 C:\Users\mysuername\.android SHA 1 signature keytool -exportcert -alias mykeyname -keystore "keystorepath" -list -v 

Надеюсь, это поможет кому-то!

Чтобы добавить к этому длинному списку причин, моя проблема заключалась в том, что я получил debugkey из файла jks, а не из приложения.

Его всегда что-то маленькое.

Давайте будем гением компьютера.