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

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

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

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

Что я делаю неправильно?

4b9b3361

Ответ 1

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

Ответ 2

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

Согласно консоли GoogleDevelopers -

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

Consent screen

Ответ 3

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

Ответ 4

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

An internal error occurred

Резюме:

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

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

  • Перейдите в консоль google api и выполните вход: https://code.google.com/apis/console

  • Нажмите вкладку "Доступ к API".

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

  • Выберите: "Установленное приложение".

  • Выберите: переключатель "Android".

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

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

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

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

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

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

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

Теперь вам будет представлена ​​ "Войти в Google+ SDK с Google".

Ответ 5

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

Ответ 6

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

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

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

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

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

  • Перейдите в консоль с облаками.
  • Создайте проект new, я бы предложил имя, подобное oldprojectname-Gplus
  • В разделе "API" включить Google+ API
  • Убедитесь, что ни один из ваших проектов не имеет одинакового имени пакета на Идентификатор клиента OAuth с тем, который вы будете использовать в противном случае, вы получите Ошибка This client ID is globally unique and is already in use (вам придется удалить старый идентификатор клиента OAuth с тем же именем пакета, которое вы будете использовать сейчас).

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

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

Android

Введите название своего проекта и ваш SHA1

Готово

Ответ 7

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

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

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

Ответ 8

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

Я развернулся к 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();

Ответ 12

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

Ответ 13

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

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

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

Ответ 14

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

Ответ 15

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

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

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

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

Ответ 16

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

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.ntk.darkmoor"
    android:versionCode="1"
    android:versionName="1.0" >

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

Ответ 17

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

Ответ 18

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

Ответ 19

Я просмотрел все предоставленные здесь ответы и другие. В моем случае проблема была также 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

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

Ответ 20

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

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