FirebaseUI-Android
FirebaseUI-Android copied to clipboard
FireBaseUI java
I am writing a test application on Firebase (Android+Java). I was faced with what problem. I use from Firebaseui for registration/authentication (https://firebase.google.com/docs/adroid/firebaseui?hl=en&authuser=0). As Sign In Method, the Google account and email/password set. So. With Google, everything works without problems and registration and authentication. And with Email/Password I registered without problems. Registered user appeared in Firebase Console, for example [email protected]. But, if I try to go under a previously registered user [email protected], then I have a form of registration. Although I expect to see that I just ask me to enter a password, because This user has already been registered earlier. How to fix this bug? Or I, maybe something overlooked, for example, did not connect any library?
package com.example.myapplication;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.firebase.ui.auth.AuthUI;
import com.firebase.ui.auth.FirebaseAuthUIActivityResultContract;
import com.firebase.ui.auth.IdpResponse;
import com.firebase.ui.auth.data.model.FirebaseAuthUIAuthenticationResult;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseApp;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
private final ActivityResultLauncher<Intent> signInLauncher = registerForActivityResult(
new FirebaseAuthUIActivityResultContract(),
new ActivityResultCallback<FirebaseAuthUIAuthenticationResult>() {
@Override
public void onActivityResult(FirebaseAuthUIAuthenticationResult result) {
onSignInResult(result);
}
}
);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
FirebaseApp.initializeApp(this);
if (mAuth.getCurrentUser() != null) {
Toast.makeText(this, "Logged", Toast.LENGTH_SHORT).show();
} else {
signOut();
}
}
private void onSignInResult(FirebaseAuthUIAuthenticationResult result) {
IdpResponse response = result.getIdpResponse();
if (result.getResultCode() == RESULT_OK) {
// Successfully signed in
FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
Toast.makeText(this, user.getDisplayName(), Toast.LENGTH_SHORT).show();
}
} else {
if (response != null) {
Toast.makeText(this, "Error: " + response.getError(), Toast.LENGTH_SHORT).show();
}
}
}
private void signOut(){
AuthUI.getInstance()
.signOut(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
public void onComplete(@NonNull Task<Void> task) {
List<AuthUI.IdpConfig> providers = Arrays.asList(
new AuthUI.IdpConfig.EmailBuilder().build(),
new AuthUI.IdpConfig.GoogleBuilder().build());
// Create and launch sign-in intent
Intent signInIntent = AuthUI.getInstance()
.createSignInIntentBuilder()
.setAvailableProviders(providers)
.build();
signInLauncher.launch(signInIntent);
}
});
}
public void onClickLogout(View view) {
signOut();
}
}
Also posted on https://stackoverflow.com/questions/77333477/firebaseui-java