У меня вопрос к людям, которые используют Firebase аутентификацию входа в Google:Последние изменения с Firebase Authentication via. Вход в Google?
Мое приложение, которое уже работает в течение нескольких месяцев, использует как вход в систему Google, так и параметры электронной почты/пароля для проверки подлинности Firebase. Однако около недели назад я заметил, что Google Sign-In перестала работать. Код не был изменен, также опция электронной почты/пароля работает так же, как обычно.
Я проверил документацию (https://firebase.google.com/docs/auth/android/google-signin), он все тот же (мое приложение копирует метод проверки подлинности из документации).
Вы столкнулись с аналогичной проблемой? Если да, скажите, пожалуйста, как я могу его решить.
Вот мой код связан с Google Вход в систему внутри моего LoginActivity:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
...
//--------Google Sign In
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Toast.makeText(LoginActivity.this, "Connection failed!", Toast.LENGTH_SHORT).show();
}
})
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
mGoogleBttn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SignIn();
}
});
}
private void SignIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mProgress.setMessage("Signing in with Google Account...");
mProgress.show();
// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
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
// ...
mProgress.dismiss();
Toast.makeText(LoginActivity.this, "Google sign in failed!", Toast.LENGTH_SHORT).show();
}
}
}
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());
mProgress.dismiss();
checkUserExist();
// 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()) {
Log.w(TAG, "signInWithCredential", task.getException());
Toast.makeText(LoginActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
});
}
private void checkUserExist() {
final String user_id = mAuth.getCurrentUser().getUid();
mDatabaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild(user_id)) {
Intent mainIntent = new Intent(LoginActivity.this, MainActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mainIntent);
} else {
Intent setupIntent = new Intent(LoginActivity.this, SetupActivity.class);
setupIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(setupIntent);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Вот мое приложение и уровень проекта build.gradle файлы: https://gist.github.com/anonymous/2c9737e898ca2568129af63e61a30f16
У меня была аналогичная проблема, но вне андроида. Когда мой входной код запускается, появляется окно, которое немедленно закрывается. Он спрашивал, разрешено ли использовать учетную запись. –
Вы выяснили проблему и ее решение? Я столкнулся с тем же в iOS. –
@ShashankAgarwal К сожалению, нет. –