Dernièrement, j'ai beaucoup travaillé avec les API Google sur Android en particulier Analytics, AdSense et Tasks API.
J'ai vu quelques exemples fournis par Google où ils utilisent cette déclaration pour obtenir un objet GoogleAccountCredential
credential = GoogleAccountCredential.usingOAuth2(this, Collections.singleton(TasksScopes.TASKS));
Cependant, si je passe par la documentation telle que:
http://developer.Android.com/google/auth/http-auth.html
http://developer.Android.com/google/play-services/auth.html
Les deux mentionnent la méthode ci-dessous à utiliser pour obtenir un jeton:token = GoogleAuthUtil.getToken(mActivity, mEmail, mScope);
Je ne sais pas lequel utiliser dans quel scénario et pourquoi. J'utilise la méthode no. 1 avec succès et sans avoir besoin de conserver le jeton dans les préférences (je suppose que cela est fait par GoogleAccountCredential automatiquement)
Quelqu'un peut-il me dire pourquoi quelqu'un utiliserait la première méthode plutôt que la seconde?
Comment puis-je accéder au jeton d'authentification dans la première méthode?
Google APIs Client Library for Java est comme son nom l'indique une bibliothèque pour accéder aux API Google et elle est disponible pour plusieurs plateformes telles que Java (en général) et = Android tandis que Google Play Services et GoogleAuthUtil est uniquement disponible sur Android.
En regardant la page wiki du projet, il est difficile de comprendre comment la bibliothèque cliente des API Google est liée à GoogleAuthUtil car le wiki suggère que la AccountManager est utilisée pour gérer les comptes Google et il ne mentionne pas du tout GoogleAuthUtil.
Cependant, si vous creusez un peu dans le code et leur outil de suivi des problèmes, vous pouvez voir que le exemple de tâches que vous avez réellement lié tilise GoogleAuthUtil depuis version 1.12. = de la bibliothèque cliente des API Google lorsque la prise en charge de GoogleAuthUtil était ajoutée .
Le wiki mentionne probablement le AccountManager au lieu de GoogleAuthUtil car c'était la façon de faire l'authentification OAuth2 avant que GoogleAuthUtil ne soit disponible et parce que cette partie du wiki n'a pas encore été mise à jour.
Pour plus d'informations sur les différences entre le AccountManager et GoogleAuthUtil, veuillez consulter: En résumé, quelle est la différence par rapport à l'utilisation de la demande OAuth2 getAuthToken et getToken
En bref, la bibliothèque cliente des API Google est une bibliothèque multiplateforme pour interagir avec les services de Google et la Android est implémentée à l'aide de GoogleAuthUtil.
Quelqu'un peut-il me dire pourquoi quelqu'un utiliserait la première méthode plutôt que la seconde?
Raisons d'utiliser la bibliothèque cliente des API Google
Raisons d'utiliser GoogleAuthUtil
Je ne sais pas lequel utiliser dans quel scénario et pourquoi. J'utilise la méthode no. 1 avec succès ...
Si vous utilisez la bibliothèque cliente des API Google et que cela fonctionne bien pour vous, je ne vois aucune raison pour laquelle vous ne devriez pas continuer à l'utiliser.
Cependant, si je créais une application Android (uniquement) qui devait interagir avec les services de Google, j'utiliserais probablement GoogleAuthUtil directement.
... sans avoir besoin de conserver le jeton dans les préférences (je suppose que cela se fait automatiquement par GoogleAccountCredential)
Oui, cela est automatiquement géré par GoogleAuthUtil qui est à son tour utilisé par GoogleAccountCredential.
Comment puis-je accéder au jeton d'authentification dans la première méthode?
Vous devriez pouvoir appeler la méthode getToken () sur l'objet GoogleAccountCredential
.
Google Play Services client library
Est écrit spécifiquement pour les appareils Android afin d'offrir une intégration transparente avec les services Google individuels et une interface utilisateur cohérente pour obtenir l'autorisation des utilisateurs d'accéder à ces services avec leurs informations d'identification.
Google APIs Client Library for Java
Est une bibliothèque générique permettant d'accéder aux services Google à partir de tous les types d'applications (Web, installée ou Android application).
Pour en revenir à Android, si l'API Google que vous souhaitez utiliser n'est pas incluse dans Google Play services library
, Vous pouvez vous connecter à l'aide de l'API REST appropriée, mais vous devez obtenir un OAuth 2.0 jeton.
Pour obtenir un jeton, vous pouvez soit -
utiliser directement la bibliothèque OAuth 2.0 de la bibliothèque cliente des API Google pour Java (non préférée pour Android)
ou tirez parti de la partie autorisation de la bibliothèque de services Google Play à l'aide de GoogleAuthUtil
et AccountPicker. Lire Autorisation avec Google pour REST API. (GoogleAuthUtil.getToken()
met en cache et gère l'expiration des jetons et se rafraîchit. Cependant, en cas d'erreurs réseau/de charge du serveur, vous vous devrez peut-être utiliser un algorithme de sauvegarde exponentielle avant de réessayer pour le jeton afin de ne pas inonder le serveur de demandes.)
ou utilisez le GoogleAccountCredential
fourni dans google-api-client-Android-1.19.0.jar
fourni avec Bibliothèque cliente des API Google pour Java . Le package propose des utilitaires basés sur les bibliothèques clientes des services Google Play et GoogleAccountCredential is just a wrapper
autour de GoogleAuthUtil
et AccountPicker
. Cela vous permettrait d'utiliser le même flux d'autorisation cohérent et la boîte de dialogue de sélection de compte standard fournie avec la bibliothèque cliente des services Google Play tout en déléguant la gestion des jetons à GoogleAccountCredential
. Reportez-vous à this pour un exemple.
La méthode numéro un (com.google.api.client.googleapis.extensions.Android.gms.auth. *) Fait partie du flux de gestion de compte multiplateforme plus général de Google, tandis que la méthode numéro deux (com.google.Android.gms. auth.GoogleAuthUtil) est Android spécifique. Il ressemble aux différentes Android API Google, méthode deux, envelopper et simplifier la méthode un. Par exemple, la documentation Google+, deuxième paragraphe , indique "Le bouton de connexion Google+ authentifie l'utilisateur et gère le flux OAuth 2.0, ce qui simplifie votre intégration avec les API Google."
Je voudrais la méthode Android spécifique, token = GoogleAuthUtil.getToken(mActivity, mEmail, mScope),
dans la mesure du possible.