J'essaie d'authentifier les utilisateurs avec un email et un mot de passe via firebase. Mais cela montre ne peut pas résoudre updateUI (utilisateur) . Voici cette partie du code.
public void OnContinue(View view) {
if(hasClickedCountinueOnce){
EditText emailTextBox = (EditText)findViewById(R.id.email);
String user = userNAAME.getText().toString();
String passwordText = password.getText().toString();
String email = emailTextBox.getText().toString();
//todo manage new account here
if(!user.isEmpty() && !passwordText.isEmpty() ){
mAuth.createUserWithEmailAndPassword(email, passwordText)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Log.d("SignInFailed", "createUserWithEmail:success");
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
} else {
// If sign in fails, display a message to the user.
Log.w("SignInFailed", "createUserWithEmail:failure", task.getException());
Toast.makeText(SignUP.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
updateUI(null);
}
}
});
}
}
}
Le code provient du projet Firebase Quickstart-Android . Voilà ce que cela fait. Vous pouvez implémenter quelque chose de similaire:
private void updateUI(FirebaseUser user) {
hideProgressDialog();
if (user != null) {
mStatusTextView.setText(getString(R.string.google_status_fmt, user.getEmail()));
mDetailTextView.setText(getString(R.string.firebase_status_fmt, user.getUid()));
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
} else {
mStatusTextView.setText(R.string.signed_out);
mDetailTextView.setText(null);
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
}
}
Vous devez écrire votre propre méthode UpdateUI personnalisée dans votre MainActivity et écrire le code de ce que doit faire votre application lorsqu'un utilisateur est connecté avec une condition, par exemple if(user!=null).
.
updateUI void privé (compte @Nullable GoogleSignInAccount) { if (compte! = null) { mStatusTextView.setText (getString (R.string.signed_in_fmt, account.getDisplayName ()));
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.VISIBLE);
} else {
mStatusTextView.setText(R.string.signed_out);
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_and_disconnect).setVisibility(View.GONE);
}
}
Votre codage pour l'authentification fonctionne.
Quel est le but de FirebaseUser user = mAuth.getCurrentUser (); Dans la connexion réussie?
Pour obtenir l'utilisateur actuel, vous devez implémenter Auth Change Listner after success login, en tant que,
private FirebaseAuth.AuthStateListener mAuthListener;
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if(user !=null){
updateUI(user);
}
}
};
mAuth.addAuthStateListener(mAuthListener);
(Utilisez un nom de variable différent)
Si je rencontre correctement votre problème avec le code limité que vous avez partagé ci-dessus, l'appel de fonction "updateUI" est ici ( https://firebase.google.com/docs/auth/Android/password-auth ) est l'appel/la fonction que vous devez écrire vous-même pour mettre à jour vos éléments de l'interface utilisateur, et comme @BobSnyder l'a mentionné, voici le lien vers un code de référence ( https://github.com/firebase/quickstart-Android/blob/master/ auth/app/src/main/Java/com/google/firebase/quickstart/auth/EmailPasswordActivity.Java # L209 )