web-dev-qa-db-fra.com

Android Google Sign In: vérifier si l'utilisateur est connecté

Je recherche un moyen de vérifier si mon utilisateur est déjà connecté à Google Sign In.

Je supporte plusieurs API de journalisation (Facebook, Google, personnalisée), je souhaite donc créer une méthode d'assistance statique telle que: User.isUserLoggedIn()

Avec Facebook j'utilise:

if AccessToken.getCurrentAccessToken() != null { 
   return true
} 

pour vérifier si l'utilisateur est connecté via Facebook.

Sur iOS, j'utilise les éléments suivants pour vérifier si l'utilisateur est connecté via Google Sign In:

GIDSignIn.sharedInstance().hasAuthInKeychain()

Ma question: Existe-t-il un équivalent sur Android de la méthode iOS:

GIDSignIn.sharedInstance().hasAuthInKeychain()?

Je recherche une méthode qui n’implique pas de rappel.

Merci! Max

16
Maxence Duthoo

Vous pouvez utiliser cette fonction

private boolean isSignedIn() {
  return GoogleSignIn.getLastSignedInAccount(context) != null;
}

https://developers.google.com/Android/reference/com/google/Android/gms/auth/api/signin/GoogleSignIn

public statique GoogleSignInAccount getLastSignedInAccount (contexte de contexte)

Obtient le dernier compte avec lequel l'utilisateur s'est connecté.

Retours: GoogleSignInAccount à partir de la dernière connexion réussie connue. Si l'utilisateur ne s'est jamais connecté auparavant ou a déconnecté/révoqué l'accès, null est retourné.

7
Linh

Consultez la documentation de connexion Android :

Pour vérifier si l'utilisateur est connecté, appelez isConnected():

if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
   // signed in. Show the "sign out" button and explanation.
   // ...
} else {
   // not signed in. Show the "sign in" button and explanation.
   // ...
}
7
Dopaz

Implémenté dans Kotlin, et en utilisant Anko:

    val googleSignInAccount = GoogleSignIn.getLastSignedInAccount(act)
    if (googleSignInAccount != null) {
        getGoogleSignInClient().signOut()
    }
1
swapnil