"Ошибка разработчика: это приложение неправильно настроено" Google войдите в firebase с идентификатором клиента из белого списка



Я пытаюсь перейти на firebase auth в своем android-приложении. Имя пакета и SHA1 в настоящее время связаны со старым проектом app engine (который я не хочу обновлять до firebase), и поэтому я не могу добавить отпечаток SHA1 в свой новый проект firebase. Проект app engine в настоящее время находится в производстве, поэтому я не могу удалить идентификаторы клиентов android или удалить проект. Документация здесь https://support.google.com/firebase/answer/6401008?authuser=0 говорит, что я должен иметь возможность внести в белый список идентификаторы клиентов старого проекта app engine. Однако когда я делаю это, а затем пытаюсь войти в приложение с помощью google с помощью firebase auth, я получаю следующую ошибку "Developer error: this application is misconfigured. Check your SHA1 and package name in the Firebase console."



Я также попробовал инструкции здесь https://firebase.googleblog.com/2016/12/working-with-multiple-firebase-projects-in-an-android-app.html которые включают в себя передачу объекта GoogleSignInOptionsв authui builder с идентификатором веб-клиента из соответствующего проекта, например:



private void StartLoginActivity() {

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("<my-client-id>.apps.googleusercontent.com")
.requestEmail()
.build();

List<AuthUI.IdpConfig> providers = Arrays.asList(
new AuthUI.IdpConfig.EmailBuilder().build(),
new AuthUI.IdpConfig.GoogleBuilder().setSignInOptions(gso).build());

startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build(),
RC_SIGN_IN);
}


Но когда я делаю это, я получаю ошибку java.lang.IllegalArgumentException: two different server client ids provided



Итак, мой вопрос заключается в том, как я могу настроить свой проект firebase для включения auth, когда SHA1 связан с существующим проектом GCP?

766   1  

1 ответ:

Я получил следующий ответ от поддержки firebase и смог заставить это работать:

Google sign in with FirebaseUI настраивается через google-сервисы.json >файл. Проблема заключается в том, что если вы используете идентификатор клиента OAuth из другого >проекта, default_web_client_id будет настроен неправильно. Он будет > указывать на автоматически сгенерированный идентификатор веб-клиента вашего нового проекта Firebase; мы >не хотим этого.

В шаге 1 из https://developers.google.com/identity/sign-in/android/backend - >auth, мы называем #requestIdToken (getString (R. string.server_client_id)). В > firebaseUI это также делается, и этот ресурс является "default_web_client_id" - > генерируется google-сервисами.формат JSON. Это нужно изменить.

Таким образом, чтобы решить проблему, вам нужно использовать идентификатор клиента web OAuth из project >#1, Вы можете сделать это либо:

Изменение google-сервисов.файл json - вам нужно будет изменить client_id > поля для правильного идентификатора веб-клиента из проекта #1 Вам также нужно внести в белый список (Auth > Sign In Providers > Google) веб-клиент >OAuth из проекта#1 в проект#2

Не использовать google-сервисы.json, так что вы можете установить default_web_client_id самостоятельно. Мы сделали руководство для этого, см. здесь.

Вот процесс, которому я следовал, чтобы заставить это работать:

  1. Перейдите в консоль GCP > выберите старый проект > API и службы > Учетные данные

  2. Создать учетные данные > идентификатор клиента OAuth

  3. Выберите веб-приложение

    • введите имя
    • оставьте исходники Javascript и авторизованные URL перенаправления пустыми
  4. Скопируйте идентификатор клиента

  5. Открыть консоль firebase

  6. перейдите в раздел аутентификация > метод входа > google
  7. белый список новый идентификатор клиента > добавить > сохранить
  8. вернитесь к настройкам > добавьте firebase в свой приложение для android
    • добавьте имя пакета android
    • оставьте сертификат подписи пустым
  9. нажмите зарегистрировать приложение
  10. скачать и открыть google-сервисы.json
  11. В oauth_client будет запись для каждого идентификатора клиента oauth в вашем приложении (к вашему сведению, их можно увидеть на консоли GCP в разделе API и службы > учетные данные).

  12. Удалите весь тег oauth_client и замените его на "oauth_client": [ { "client_id": "<your_new_client_id>", "client_type": 3 } ], Если вам нужен кто-либо из других клиентов oauth, то сделайте убедитесь, что белый список находится в верхней части, так как это, кажется, по умолчанию.

  13. Сохраните файл и скопируйте его в модуль приложения для android.

  14. Убедитесь, что у вас есть следующие зависимости:

    • корневая сборка проекта.gradle
    • classpath ' com.гугл.gms: google-сервисы: 4.0.0 '
    • сборка модуля приложения.gradle
    • compile ' com.гугл.firebase: firebase-core: 16.0.0 '
    • компиляция - ком.firebaseui: firebase-ui-auth:4.0.0 '
  15. Построить и запустить проект

Если вы получаете эту ошибку (без дальнейших подробностей): BasicNetwork.performRequest: Unexpected response code 400 for https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyAssertion?alt=proto&key=AIzaSyBJL6EO8vMEJpyWUCAKP8ZgH4LYR0Hrwpk

Проверьте, что ваши зависимости от gradle установлены на версии выше (или выше)

Если вы получите эту ошибку: com.google.firebase.FirebaseException: An internal error has occurred. [ Invalid Idp Response:the Google id_token is not allowed to be used with this application. Its audience (OAuth 2.0 client ID) is <your-client-id>, which is not authorized to be used in the project with project_number: <your-project-number>. ]

Попробуйте удалить и повторно добавить идентификатор клиента из белого списка на консоли firebase.

Comments

    Ничего не найдено.