0

J'intègre l'authentification Facebook et Google dans mon application Android. Lors du lancement de l'application, je souhaite vérifier si un utilisateur est connecté à l'application avec l'authentification Facebook ou Google. J'ai eu du succès avec Facebook en utilisant le code ci-dessous:Comment vérifier si un utilisateur s'est connecté avec un compte Google

if (Profile.getCurrentProfile() != null && AccessToken.getCurrentAccessToken() != null){ 
     Intent i = new Intent(Splash.this, SecondActivity.class); 
     startActivity(i); 
     finish(); 
} 

Mais n'ayant aucun succès avec Google. En outre, j'ai cherché de nombreuses réponses, mais la plupart utilisaient Firebase pour l'authentification Google.

Comment pourrais-je y parvenir en utilisant l'authentification Google et non Firebase.

L'aide serait appréciée. Merci d'avance!

+0

La méthode silentSignIn de GoogleSignInApi peut être utilisée pour vérifier la validité des informations d'identification mises en cache de l'utilisateur. –

+0

@SudheeshR Pouvez-vous élaborer un peu, s'il vous plaît? –

+0

Nous pouvons utiliser la méthode GoogleSignInApi.silentSignIn() pour vérifier si les informations de connexion sont valides ou non. Renvoie un objet OptionalPendingResult qui est utilisé pour vérifier si les informations d'identification sont valides ou non. Si les informations d'identification sont valides, la méthode isDone() de OptionalPendingResult renvoie true. La méthode get peut ensuite être utilisée pour obtenir le résultat immédiatement (si elle est disponible). –

Répondre

0
@Override 
    public void onStart() { 
     super.onStart(); 

     OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient); 
     if (opr.isDone()) { 
      // If the user's cached credentials are valid, the OptionalPendingResult will be "done" 
      // and the GoogleSignInResult will be available instantly. 
      Log.d(TAG, "Got cached sign-in"); 
      GoogleSignInResult result = opr.get(); 
      handleSignInResult(result); 
     } else { 
      // If the user has not previously signed in on this device or the sign-in has expired, 
      // this asynchronous branch will attempt to sign in the user silently. Cross-device 
      // single sign-on will occur in this branch. 
      showProgressDialog(); 
      opr.setResultCallback(new ResultCallback<GoogleSignInResult>() { 
       @Override 
       public void onResult(GoogleSignInResult googleSignInResult) { 
        hideProgressDialog(); 
        handleSignInResult(googleSignInResult); 
       } 
      }); 
     } 
    } 
3

Nous pouvons utiliser la méthode GoogleSignInApi.silentSignIn() pour vérifier si les informations de connexion sont valides ou non. Il renvoie un objet OptionalPendingResult qui est utilisé pour vérifier si les informations d'identification sont valides ou non. Si la référence est valide, la méthode isDone() de OptionalPendingResult renvoie true. La méthode get peut ensuite être utilisée pour obtenir le résultat immédiatement (si elle est disponible).

Documentation pour Android OptionalPendingResult: https://developers.google.com/android/reference/com/google/android/gms/common/api/OptionalPendingResult

Documentation pour Android GoogleSignInApi: https://developers.google.com/android/reference/com/google/android/gms/auth/api/signin/GoogleSignInApi

Voici le code pour vérifier si les informations d'identification sont valides ou non.

OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(google_api_client); 
if (opr.isDone()) { 
    // If the user's cached credentials are valid, the 
    // OptionalPendingResult will be "done" and the 
    // GoogleSignInResult will be available instantly. 
    Log.d("TAG", "Got cached sign-in"); 

    GoogleSignInResult result = opr.get(); 

    handleSignInResult(result); 
}