web-dev-qa-db-fra.com

Firebase Android: échec de la connexion à Google

Tout d'abord, je dois dire que je suis très novice en développement Android, alors pardonnez-moi si je néglige quelque chose d'évident.

Pour un projet universitaire, je dois créer une application qui authentifie d'abord les utilisateurs via leur compte Google à l'aide de Firebase. J'ai d'abord suivi les instructions que j'ai trouvées ici .

Pour commencer, je copie collé ce code à partir de Firebase Tutorial. Tout semble fonctionner, sauf une chose:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d(TAG, "------------------ onActivityResult ------------------");
    super.onActivityResult(requestCode, resultCode, data);

    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {
            Log.d(TAG, "------------------ googleSignInSuccess ------------------");
            // Google Sign In was successful, authenticate with Firebase
            GoogleSignInAccount account = result.getSignInAccount();
            firebaseAuthWithGoogle(account);
            // Start menu activity once the user has been logged in
            Intent intent = new Intent(this, MenuActivity.class);
            startActivity(intent);
        } else {
            Log.d(TAG, "------------------ googleSignInFailure ------------------");
            // Google Sign In failed, update UI appropriately
            // [START_EXCLUDE]
            //Log.d(TAG, result.getStatus().getStatusMessage());
            updateUI(null);
            // [END_EXCLUDE]
        }
    }
}

Ici, result.isSuccess() == false. Je pense donc que l'authentification Google échoue pour une raison que je ne comprends pas. Je suis sûr d'avoir saisi le bon mot de passe. J'ai également activé l'authentification de compte Google dans la console Firebase de mon application.

Merci beaucoup d'avance si vous pouvez m'aider.

EDIT: pour être plus précis, la première fois que je lance le programme sur mon émulateur (ou après chaque fois que j'efface des données), je dois entrer mes informations d'identification Google dans l'activité de connexion Google dédiée. cela apparaît. Cela fonctionne bien et la même activité semble réussir à m'authentifier. Cependant, après cela, result.isSuccess() est toujours faux et je ne comprends pas pourquoi.

5
Scrashdown

J'ai finalement trouvé le problème, j'ai commis une erreur en authentifiant mon application dans la console Firebase ici (section "avant de commencer"), 4ème étape. Je suis entré dans la variable debug à la place et cela fonctionne maintenant.

Merci quand même!

8
Scrashdown

Vous pouvez vérifier le statut du résultat avec result.getStatus().getStatusMessage(). Enregistrez ce message ou corrigez vos résultats Status et cela devrait indiquer un problème. Status a également la méthode getResolution() qui fournit une intention en attente qui devrait résoudre votre échec (vérifiez d’abord si la résolution est disponible avec l’appel hasResolution(), qui renvoie true si elle peut le gérer pour vous).

2
pawegio

Essayez de changer de GSO par:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();

J'espère que cela t'aides !

1
Karan Kanojia