Проблемы с OAuth2 после обновления firebase

У меня есть приложение для Android (возможно, лучше сказать HAD).

Приложение использует некоторые сторонние библиотеки, в том числе: карты Google, Firebase, firebaseui. После преобразования приложения для использования новой firebase я наткнулся на два основных вопроса:

  1. Экран входа в firebaseui изменился и теперь выглядит так (из диалогового окна входа в систему он превратился в активность):

Войти в скриншот

Который, конечно, полностью отличается от старого и по какой-то нечетной причине отличается от варианта сборки отладки.

  1. Я не могу использовать знак google со следующей ошибкой, отображаемой в logcat:

Com.google.firebase.FirebaseException: Произошла внутренняя ошибка. [Идентификатор клиента OAuth2 в конфигурации сервера не найден. ]

Опять эта проблема не возникает в варианте отладки.

Чтобы быть понятным, вариант отладки использует ту же базу кода, но другую базу данных firebase.

Для следующей ошибки:

Com.google.firebase.FirebaseException: Произошла внутренняя ошибка. [Идентификатор клиента OAuth2 в конфигурации сервера не найден. ]

  1. Вы должны сначала перейти на консоль разработчика Google в категории учетных данных ( https://console.developers.google.com/apis/credentials ), затем найти автоматически сгенерированный идентификатор клиента OAuth 2.0 с именем «Web-клиент» (автоматически созданный Служба Google) ", сохраните данные, относящиеся к этому идентификатору клиента.

  2. Перейдите в консоль Firebase в категории «Auth», затем перейдите на вкладку «Режим подключения», откройте настройки проверки подлинности Google и, наконец, разверните настройки веб-SDK. Теперь вставьте предыдущий найденный идентификатор клиента OAuth с его настройками ключа и сохранения.

Измененный параметр касается настроек в Интернете, но, похоже, он используется компонентом Firebase android.

С New Firebase они изменили много кода и способ сделать что-то.

Теперь, когда вы настраиваете проект Firebase, они дают вам возможность ввести свой AuthId, вы можете загрузить JSON и вставить его в свое приложение.

После того, как вы настроите ClientId, вы можете добавить этот код, чтобы снова вернуть свой Google Login.

Button signInButton; //Google Variables private static final int RC_SIGN_IN = 9001; private GoogleApiClient mGoogleApiClient; //Firebase Variables private FirebaseAuth mAuth; private FirebaseAuth.AuthStateListener mAuthStateListener; //Inside OnCreate(); //Google SignIn Methods // [START config_signin] // Configure Google Sign In GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build(); // [END config_signin] mGoogleApiClient = new GoogleApiClient.Builder(this) .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) .addApi(Auth.GOOGLE_SIGN_IN_API, gso) .build(); mAuth = FirebaseAuth.getInstance(); mAuthStateListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); updateUI(user); } }; @Override protected void onStart() { super.onStart(); mAuth.addAuthStateListener(mAuthStateListener); mGoogleApiClient.connect(); } @Override protected void onStop() { super.onStop(); if(mAuthStateListener != null) { mAuth.removeAuthStateListener(mAuthStateListener); } mGoogleApiClient.disconnect(); } // [START onactivityresult] @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RC_SIGN_IN) { GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); if (result.isSuccess()) { // Google Sign In was successful, authenticate with Firebase GoogleSignInAccount account = result.getSignInAccount(); firebaseAuthWithGoogle(account); } else { // Google Sign In failed, update UI appropriately // [START_EXCLUDE] updateUI(null); // [END_EXCLUDE] } } } // [END onactivityresult] private void firebaseAuthWithGoogle(GoogleSignInAccount acct) { AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null); mAuth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { // If sign in fails, display a message to the user. If sign in succeeds // the auth state listener will be notified and logic to handle the // signed in user can be handled in the listener. if (!task.isSuccessful()) { Toast.makeText(LoginActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); } } }); } // [END auth_with_google] // [START signin] private void signIn() { Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); startActivityForResult(signInIntent, RC_SIGN_IN); } // [END signin] private void updateUI(FirebaseUser user) { if (user != null) { //write what you want to do after login here } } @Override public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { // An unresolvable error has occurred and Google APIs (including Sign-In) will not // be available. Toast.makeText(this, "Google Play Services error.", Toast.LENGTH_SHORT).show(); } public void GoogleSignIn(View v){ signIn(); } @Override protected void onRestart() { super.onRestart(); mGoogleApiClient.connect(); } 

Это отлично работает для проверки подлинности Google с использованием Firebase в моем приложении