Ошибка: статус {statusCode = DEVELOPER_ERROR, разрешение = null}

104

Я использую вход gplus и получаю эту ошибку, когда нахожусь в onActivityResult ....

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    client.onActivityResult(requestCode, resultCode, data);

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

            GoogleSignInAccount acct = result.getSignInAccount();
//                Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());

            mEmail = acct.getEmail();
            String mFullName = acct.getDisplayName();
            String mGoogleplusId = acct.getId();


            SocialUser user = new SocialUser();
            user.setType("googleplus");

            user.setEmail(mEmail);
            user.setFullname(mFullName);
            user.setId(mGoogleplusId + "");
            loginParams.put("email_id", mEmail);
            loginParams.put("googlePlusId", mGoogleplusId);
            loginParams.put("full_name", mFullName);
            loginParams.put("registrationType", "googleplus");
            SignUpService(user);


        } else {
            Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
        }
    }
}

И я вызываю вход в систему gplus нажатием кнопки. При нажатии кнопки выполняется следующий код ....

 GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestEmail()
            .build();
    mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)

            .addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
            .build();


    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
    startActivityForResult(signInIntent, 0);

И я получаю эту ошибку ...

Status{statusCode=DEVELOPER_ERROR, resolution=null}

в этой строке ....

GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);

Пожалуйста, предложите решение.

Гурвиндер Сингх
источник
1
Приложение неправильно настроено. Проверьте конфигурацию google api.
1'hafs
6
Да, но я не могу понять, в чем дело.
Гурвиндер Сингх
Я не использую firebase. См. Мое решение здесь: stackoverflow.com/a/46828895/1160216
Майк Миллер,

Ответы:

215

Вам нужно добавить свой ключ SHA1 в конфигурацию консоли firebase. Сделать это можно так:

Консоль Firebase ( https://console.firebase.google.com ) -> ваш проект -> конфигурация -> прокрутите до

введите описание изображения здесь

Вы можете найти свой ключ SHA1 в «Отчет о подписи» из Android Studio:

введите описание изображения здесь

Затем посмотрите вкладку «Выполнить» и нажмите кнопку:

введите описание изображения здесь

Думаю, так проще. Надеюсь на эту помощь.

SolArabehety
источник
1
вот самый простой способ получить релиз SHA-1 из консоли разработчика Google: stackoverflow.com/a/50124038/4923891
eren130 01
Мне было сложно понять, где разместить этот ключ SHA в консоли Firebase. Наконец то нашел. Откройте настройки проекта> Прокрутите вниз, добавьте отпечаток пальца, поместите туда свой ключ SHA> Загрузите новый google-services.json и поместите его android-app \ app
paakjis
1
Заметка! Несмотря на то, что в консоли firebase есть место для хэша ключа SHA-256, вы ДОЛЖНЫ ввести ключ SHA-1. SHA-256 по-прежнему будет выдавать ошибки
f.khantsis
Полезно. Спасибо!
Пуджа
30

Вероятно, вы создали файл конфигурации, используя SHA1 вашего производственного токена, используйте androiddebugkeyпсевдоним для сбора SHA1, соответствующего отладочной версии вашего приложения, и скопируйте файл конфигурации в каталог app, у вас должны быть оба файла конфигурации (один для для целей отладки и другой для производственной среды).

На основе пошагового руководства, опубликованного на https://developers.google.com/identity/sign-in/android/start

Марио
источник
5
Моя ошибка была исправлена, когда я переключился на учетные данные веб-клиента вместо клиента Android для идентификатора клиента OAuth 2.0. Формулировка все еще сбивает меня с толку, поскольку я разрабатываю приложение для Android, которое взаимодействует с веб-сервером ... но ошибка, по крайней мере, исчезла,
Буррито,
12

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

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

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

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

  Copy the path of the newly generated .jks file.

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

  keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME

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

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

Удит Капахи
источник
который выпустил только sha1, я размещаю, а затем также получаю эту ошибку, сгенерируйте google_services.xml для входа в Google, аналитики и gcm, один файл
Харша,
убедитесь, что ваш sha1 относится к «
выпускной
Ха, да, я генерирую подписанный apk и также публикую в appstore, что я использую только пароли jks и keystore
Харша,
мой открытый ssl - openssl-0.9.8k_WIN32, я использую предыдущие для разработки
Харша,
keytool требуется пароль : «android»
Guglie
11

введите описание изображения здесь

Я исправил это, подняв клавишу, соответствующую выделенному тексту. Из-за сбивающего с толку использования слова «сервер» на странице документации Firebase я взял файл Server key. Что и было причиной проблемы.

Вы можете найти ключ здесь .

4127157
источник
Спасибо! В моем случае сработало. Я думаю, это как-то связано с использованием собственного внутреннего сервера (и вызовом "requestServerAuthCode" в GoogleSignIn)
И.Турченко
5

У меня была та же проблема, как я решил, это то, что у меня был другой applicationId в моем файле gradle, чем имя пакета в моем файле манифеста. И я использовал applicationId для создания файла json. Мне пришлось изменить имя моего пакета на то, что было моим applicationId, и это исправило его для меня.

Отступник
источник
1
Я всегда думал, что пакет в манифесте был переопределен ApplicationId, определенным в gradle. Это не так?
Flo We
3

В качестве альтернативы приведенным здесь ответам вы можете использовать Android Studio Firebase Assistant для автоматического добавления SHA-1 в ваш проект одним нажатием некоторых кнопок.

В Android Studio перейдите Tools > Firebase > Select 'Authentication'и щелкните ссылку с надписью 'Email and password authentication'.

Это даст вам небольшое руководство о том, как интегрировать аутентификацию в ваш проект, но, поскольку вы, вероятно, сделали все это, просто щелкните, 'Connect to Firebase'и все готово.

Ренан Агияр
источник
3

Это старый вопрос, но в последнее время я застрял с ошибкой 10 (DEVELOPER_ERROR), потому что использовал идентификатор клиента Android, созданный в консоли разработчика Google.

Решением для меня было использовать учетные данные Android в консоли разработчика Google только для указания ключа SHA моего apk и использовать идентификатор клиента учетных данных веб-приложения (!) Из консоли разработчика Google в моем приложении Cordova.

config.xml:

<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
    <variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
    <variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
</plugin>

код:

window.plugins.googleplus.login(
    {
       'webClientId': '[web-application-client-id].apps.googleusercontent.com'
    }, 
    ...

Я не использую firebase.

тобик
источник
Спасибо большое, это сэкономило мне много времени. Действительно, использование автоматически созданного Интернета client idрешило проблему DEVELOPER_ERROR. Хотя для меня это не имеет смысла и неочевидно, что нужно использовать другой идентификатор клиента.
Мирослав Колодий
3

Возможно, вы сгенерировали и добавили неправильный ключ SHA1. Выполните следующие шаги для создания ключа SHA1 в Android Studio:

  1. Нажмите Gradle (на правой боковой панели вы увидите панель Gradle)
  2. Нажмите «Обновить» (нажмите «Обновить» на панели Gradle, вы увидите список скриптов Gradle вашего проекта)
  3. Нажмите на свой проект (список форм имени вашего проекта (корень))
  4. Нажмите "Задачи"
  5. Нажмите на Android
  6. Дважды щелкните по подписыванию отчета (вы получите SHA1 и MD5 на панели выполнения (иногда это будет в консоли Gradle))

Теперь добавьте этот ключ SHA1 в свой проект firebase для Android.

Санджай Шарма
источник
3

Поместите правильный файл json в корень проекта Android.
Подробнее см. Здесь: https://coderzpassion.com/android-working-latest-google-plus-login-api/

Джагджит Сингх
источник
Обязательно ли добавлять тот json, который мы раньше обходились без него?
Гурвиндер Сингх
Я поместил правильный файл с правильной конфигурацией, но ошибка все еще есть
Бибасванн Бандйопадхай,
1

Ошибка вызвана тем, что контрольная сумма SHA-1 ключа отладки или выпуска не включена в консоль firebase / google.

Сначала сгенерируйте ключ, используя следующую команду:

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

Затем скопируйте контрольную сумму SHA-1 и перейдите по ссылке:

Консоль Firebase> Ваш проект> Настройки приложения> Добавить отпечаток пальца

Набин Бхандари
источник
1

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

Я решил проблему, выполнив следующие действия:

  1. Я добавил отпечаток пальца sha-256 поверх отпечатка пальца sha-1, который у меня уже был в консоли firebase. (Не уверен, требуется ли этот шаг)
  2. Я снова загрузил файл google-services.json и заменил старый файл.
  3. переустановил приложение

и это сработало

Mantoska
источник
0

Я столкнулся с этой ошибкой в ​​своем приложении firebase. Это было исправлено, когда я добавил requestIdToken(activity.getString(R.string.default_web_client_id))часть ниже.

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
        .build();

    apiClient = new GoogleApiClient.Builder(activity)
        .addConnectionCallbacks(this)
        .enableAutoManage(activity, this)
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
        .build();

    Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
    activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);
Дэн Бро
источник
что такое default_web_client_id? откуда я могу это получить?
Айман Аль-Абси
@ AymanAl-Absi Правильно ли вы настроили свой проект для служб Google? см .: developers.google.com/android/guides/google-services-plugin
Дэн Бро,
1
@ AymanAl-Absi вы также получаете "default_web_client_id" из вашего файла google-service.json. В этом файле вы можете видеть тег Client_ID в этом теге, который вы копируете только этот текст (client_ID) <[Client_ID] .app.etc>.
Prince
0

Я получил эту ошибку, когда обновил свой файл конфигурации json с новой учетной записью Google.

Удаление приложения вручную и его переустановка сработали для меня.

sanath_p
источник
0

Убедитесь, что вы включили вход в Google в разделе «Проверка подлинности» в консоли Firebase.

hellowill89
источник
0

Я решил свою проблему, используя правильный server_client_id в этой строке:

String serverClientId = getString(R.string.server_client_id);

Я использовал неправильный код.

MJ
источник
0

Некоторые службы, такие как вход в Google, требуют добавления отпечатка SHA1 в вашу консоль firebase.

Я пропустил добавление отпечатка SHA в консоли firebase. Вы можете сделать это, перейдя в FireBase Console> настройки проекта> Добавить опцию отпечатка пальца.

Вы можете сгенерировать отпечаток SHA1 очень простым способом https://www.youtube.com/watch?v=FczARQ244GE

После этого я сделал еще одну ошибку

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

Также убедитесь, что имя пакета (xyz), которое вы добавили в firebase, такое же, как и в вашем коде Android.

Также убедитесь, что вы используете правильный AppID

user2694064
источник
0

После долгих поисков я нашел решение. На самом деле эта ошибка Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}указывает на неправильный SHA-1 ИЛИ неправильное имя пакета ИЛИ что-то еще ?. В моем случае я добавляю debugключевое слово в конец имени моего пакета com.sample.app=>com.sample.app.debug

Альберт
источник
0

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

подробности при авторизации с помощью Firebase sectoin здесь

Амира Самави
источник