web-dev-qa-db-fra.com

Erreur Firebase d'authentification Android: classe de descripteur de module local pour com.google.firebase.auth introuvable

  • J'essaie de créer une application avec des fonctionnalités de connexion/enregistrement via Firebase. Je travaille dessus avec un partenaire (il est sur Linux, je suis sur Mac) et il peut faire en sorte que l'authentification fonctionne, mais pour une raison quelconque, je ne le suis pas. Nous avons tous le même code, les outils SDK vérifiés dans le gestionnaire de SDK, exécutant la même version de tout. 
  • Voici le fichier de classement:

    
    compile 'com.Android.support:appcompat-v7:25.3.0'
    compile 'com.Android.support.constraint:constraint-layout:1.0.2'
    compile 'com.google.firebase:firebase-auth:10.2.1'
    compile 'com.Android.support:design:25.3.0'
    testCompile 'junit:junit:4.12' 
    
  • Et le code:



    public class RegisterActivity extends AppCompatActivity {
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;

    private EditText mUsernameField;
    private EditText mPasswordField;
    private EditText mConfirmPasswordField;

    private Button mRegisterButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        mUsernameField = (EditText) findViewById(R.id.enterUsername);
        mPasswordField = (EditText) findViewById(R.id.enterPassword);
        mConfirmPasswordField = (EditText) findViewById(R.id.confirmPassword);
        mRegisterButton = (Button) findViewById(R.id.confirmRegistration);

        mRegisterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                createAccount(mUsernameField.getText().toString(), mPasswordField.getText().toString());
            }
        });
        mAuth = FirebaseAuth.getInstance();

        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in
                    Log.d("account", "onAuthStateChanged:signed_in:" + user.getUid());
                } else {
                    // User is signed out
                    Log.d("account", "onAuthStateChanged:signed_out");
                }
                // ...
            }
        };
    }

    @Override
    public void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(mAuthListener);
    }

    @Override
    public void onStop() {
        super.onStop();
        if (mAuthListener != null) {
            mAuth.removeAuthStateListener(mAuthListener);
        }
    }

    private void createAccount(String email, String password) {
        Log.d("account", "createAccount:" + email);
        if (!validateForm()) {
            return;
        }

        // [START create_user_with_email]
        mAuth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener() {
                    @Override
                    public void onComplete(@NonNull Task task) {
                        Log.d("account", "createUserWithEmail:onComplete:" + task.isSuccessful());

                        // 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(RegisterActivity.this, R.string.register_failed,
                                    Toast.LENGTH_SHORT).show();
                        }

                        else {
                            Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
                            RegisterActivity.this.startActivity(intent);
                            finish();
                        }
                    }
                });
        // [END create_user_with_email]
    }

    private boolean validateForm() {
        boolean valid = true;

        String email = mUsernameField.getText().toString();
        if (TextUtils.isEmpty(email)) {
            mUsernameField.setError("Required.");
            valid = false;
        } else {
            mUsernameField.setError(null);
        }

        String password = mPasswordField.getText().toString();
        if (TextUtils.isEmpty(password)) {
            mPasswordField.setError("Required.");
            valid = false;
        } else {
            mPasswordField.setError(null);
        }

        String confirmPassword = mConfirmPasswordField.getText().toString();
        if (TextUtils.isEmpty(confirmPassword)) {
            mConfirmPasswordField.setError("Required.");
            valid = false;
        } else {
            mConfirmPasswordField.setError(null);
        }

        if(!confirmPassword.equals(password)) {
            mConfirmPasswordField.setError("Passwords must be the same.");
            valid = false;
        }

        return valid;
    }

}

 
  • Et enfin l'erreur:

W/DynamiteModule: classe de descripteur de module local pour com.google.firebase.auth introuvable .
 W/GooglePlayServicesUtil: Google Play Store est manquant .
 I/art: Balayage partiel des marques en arrière-plan GC libéré 5866 (313 Ko) Objets AllocSpace, 1(14KB) LOS, 39% gratuit, 2 Mo/4 Mo, mis en pause 5,176 ms total 27,761 ms 
 D/compte: createUserWithEmail: onComplete: false 

  • Presque tout a été pris manuel du site Web Firebase. S'il vous plaît, aidez-nous, nous sommes bloqués là-dessus depuis des heures et aucune des questions similaires ne nous a aidés.
4
John Doe

Ajoutez un écouteur log dans onComplete() de createUserWithEmailAndPassword() pour voir quelle est exactement la raison de l'échec. 

   if (!task.isSuccessful()) {
    Log.e(TAG, "onComplete: Failed=" + task.getException().getMessage()); 
    }

Cela peut être dû à la password ou email que vous avez entrée pour créer un compte . 

  • si le courrier électronique que vous avez entré est au format approprié et existe.
  • si le mot de passe est suffisamment fort pour être accepté (généralement pas moins de 6 lettres).
  • s'il existe déjà un compte avec le même email.
4
Niraj Niroula

Option 1: Accédez à la console Firebase <Authentification <MÉTHODE D'INSCRIPTION et vérifiez si vous l'utilisez dans l'état Anonyme. Si c'est le cas, désactivez-le et activez Email/Mot de passe ou la méthode de connexion que vous utilisez. 

Option 2: vérifiez si le périphérique que vous testez exécute Google Play Services 9.0.0 ou une version ultérieure.

Pouvez-vous vérifier la version de vos services Google Play?

Conditions préalables :

  • Un appareil Android exécutant les services Google Play version 0.8 ou ultérieure
  • Le SDK des services Google Play à partir du gestionnaire de SDK Android
  • Android Studio 1.5 ou supérieur
  • Un projet Android Studio et son nom de package.

Une des raisons de ce problème pourrait être que votre méthode de connexion dans Firebase> Auth Dashboard est peut-être désactivée.

MODIFIER

La version 10.2.1 n'était pas disponible au téléchargement à partir de n'importe quel ordinateur (virtuel) appareil que vous avez testé, mise à jour requise.

La version des services Google Play indiquée dans la section Extras au bas du gestionnaire de SDK autonome n'a aucun effet sur la version utilisée par un émulateur. Les émulateurs s'exécutent sur des images système configurées pour contenir une version particulière de Play Services, qui n'est pas toujours la même.

Vérifiez que vous avez téléchargé les dernières images d'émulateur ayant une compatibilité de version telle que la version 10.2.1 (la plus récente).

1
Aryan