Помилка: статус {statusCode = DEVELOPER_ERROR, роздільна здатність = null}


102

Я входжу в систему 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'хафи

6
Так, але я не в змозі з’ясувати, що не так.
Gurvinder Singh

Я не використовую firebase. Дивіться моє рішення тут: stackoverflow.com/a/46828895/1160216
Майк Міллер

Відповіді:


213

Вам потрібно додати ключ SHA1 до конфігурації консолі firebase. Ви можете зробити це таким чином:

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

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

Ви можете знайти свій ключ SHA1 під керуванням "Підписання звіту" від Android Studio:

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

Потім перегляньте вкладку "запустити" і натисніть кнопку:

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

Я думаю, що це простіший спосіб. Сподіваюся, що це допоможе.


1
тут це найпростіший спосіб отримати реліз SHA-1 з консолі розробника Google: stackoverflow.com/a/50124038/4923891
eren130

У мене виникли проблеми зрозуміти, куди поставити цей ключ SHA в Firebase Console. Нарешті його знайшли. Відкрийте Налаштування проекту> Прокрутіть вниз, додайте відбиток пальців, покладіть туди свій ключ 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 має версію "реліз" програми, а не "налагодження"
Udit Kapahi

Ha Так, я генерую підписаний apk і публікується в appstore також, що використовую лише jks і паролі keystore
Харша,

мій відкритий ssl є openssl-0.9.8k_WIN32, використовую попередні програми для розробки одного
Харша,

keytool вимагає пароль : "android"
Guglie

11

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

Я виправив це шляхом підбору ключа, що відповідає виділеному тексту. Через заплутане використання слова "сервер" на сторінці документації Firebase я підбиравServer key . Що було причиною проблеми.

Ви можете знайти ключ тут .


Дякую! Працював у моєму випадку. Я думаю, це якимось чином пов’язано із використанням власного сервера заходу (та закликом до "requestServerAuthCode" в GoogleSignIn)
ITurchenko

5

У мене була така ж проблема, як я вирішив це те, що у мене в файлі gradle був інший applicationId, ніж назва пакета в моєму файлі маніфесту. І я використовував applicationId, щоб створити файл json. Мені довелося змінити назву пакета на те, що було в моєму додатку, і це виправило для мене.


1
Я завжди думав, що пакунок у Manifest перекрито ApplicationId, визначеним у gradle. Це не так?
Flo Ми

3

В якості альтернативи наведених тут відповідей ви можете використовувати Firebase Assistant Android Studio, щоб автоматично додати свій SHA-1 до свого проекту одним натисканням кнопок.

У студії Android перейдіть до 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 виконайте наступні дії:

  1. Клацніть Gradle (з правої бічної панелі ви побачите смужку Gradle)
  2. Клацніть на «Оновити» (натисніть «Оновити з панелі Gradle», ви побачите список сценаріїв Gradle свого проекту)
  3. Клацніть на своєму проекті (список форм вашої назви проекту (корінь))
  4. Клацніть на Завдання
  5. Клацніть на Android
  6. Двічі клацніть на підписуванні звіту (ви отримаєте SHA1 та MD5 в панелі запуску (іноді це буде в консолі Gradle))

Тепер додайте цей ключ SHA1 у ваш проект Android для Firebase.


3

Будь ласка, покладіть правильний файл json в корінь проекту Android, щоб
отримати докладнішу інформацію, див. Тут: https://coderzpassion.com/android-working-latest-google-plus-login-api/


Чи обов'язково додати той json, який ми раніше використовували без нього?
Gurvinder Singh

Я поставив потрібний файл із правильною конфігурацією, все ж є помилка
Bibaswann Bandyopadhyay

1

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

Я вирішив проблему цими кроками:

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

і це спрацювало


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);

що за замовчуванням_web_client_id? звідки я можу це отримати?
Айман Аль-Абсі

@ AymanAl-Absi Ви правильно налаштували свій проект для служб Google? дивіться: developers.google.com/android/guides/google-services-plugin
Dan Brough

1
@ AymanAl-Absi ви також отримаєте "default_web_client_id" з вашого файлу google-service.json у цьому файлі, ви можете побачити тег Client_ID, у який ви копіюєте лише цей текст (client_ID) <[Client_ID] .app.etc>.
Принц

0

Я отримав цю помилку, коли я оновив свій конфігураційний файл json з новим обліковим записом google.

Видалення програми вручну та перевстановлення програми працювало на мене.


0

Помилка викликана тим, що контрольна сума SHA-1 ключа налагодження чи випуску не включена до консолі firebase / google.

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

keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME

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

Консоль Firebase> Ваш проект> Налаштування програми> Додати відбиток пальця



0

Переконайтеся, що ви ввімкнули вхід у Google під аутентифікацією на консолі Firebase.


0

Я вирішив свою проблему, використовуючи правий server_client_id у цьому рядку:

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

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


0

Для деяких служб, таких як вхід в Google, потрібно додати відбиток пальців SHA1 до консолі Firebase.

Я пропустив додавання відбитка пальців SHA в консолі firebase. Це можна зробити, перейшовши в Консоль FireBase> Налаштування проекту> Опція Додати відбиток пальця.

Ви можете створити відбиток SHA1 дуже простим способом https://www.youtube.com/watch?v=FczARQ244GE

Після цього я робив ще одну помилку

Після генераціїg SHA1 вкажіть вище вказаний метод. Я скопіював неправильний ключ SHA1, термін дії якого закінчився. Тому переконайтеся, що ключ SHA1, який ви копіюєте з верхнього вихідного виводу, є дійсним (Перевірте дійсне значення досі, а також ключ SHA1)

Також переконайтеся, що назва пакету (xyz), який ви додали у firebase, збігається з вашим кодом Android.

Також обов’язково використовуйте правильний AppID


0

Після тривалої розслідування я знайшов рішення. Насправді ця помилка Error: Status{statusCode=DEVELOPER_ERROR, resolution=null}вказує на неправильну SHA-1 АБО Неправильну назву пакета АБО щось інше ?. У моєму випадку я додаю debugключове слово до кінця імені мого пакета com.sample.app=>com.sample.app.debug


0

Я боровся з цим питанням, тому що зробив копію своєї заяви зі зміною назви пакета. Я додаю новий проект для нього в Firebase. Моя помилка полягала в тому, що я забув змінити ідентифікатор клієнтського сервера на той, який в новому проекті Firebase.

Більше подробиць під аутентифікацією на Firebase Sectoin тут

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.