Accéder à google plus de client à partir de plusieurs activités
Je suis du développement d'une application dans laquelle j'ai intégré google plus. Jusqu'à présent, Sa fonctionne très bien, je suis en mesure de récupérer le profil de l'utilisateur.
Mais maintenant, je veux faire ce qui suit:
1)j'ai deux activités signInActivity
et shareActivity
.
2)Si l'utilisateur est déjà signin à l'aide de signInActivity
alors il ne faut pas demander signin de nouveau dans
shareActivity
et doit partager directement le contenu.
3)Si l'utilisateur n'est pas signedin dans le signInActivity
et essayer de partager des données à l'aide shareActivity
puis app devrait signin l'utilisateur et ensuite seulement le partage des données. Dans ce cas, si l'utilisateur revient à la signInActivity
puis app devrait montrer que "vous avez déjà signedin"
En bref je veux utilisateur signin être Centrale au sein de l'application, de sorte que si elle est alrady signedin il devrait être accessible à partir de n'importe quelle activité.
J'ai entendu parler du jeton d'accès mais je ne sais pas comment l'utiliser et explique qu'elle expire dans une heure, ce qui n'est pas ce que je veux.
Comment puis-je faire centrale google plus signin? est-il possible? ou j'ai besoin d'authentifier l'utilisateur à chaque activité?
Vous devez vous connecter pour publier un commentaire.
La gestion d'une instance distincte de GoogleApiClient dans chaque activité pas résultat que l'utilisateur est invité à se connecter plusieurs fois.
Google+ Sign-in (c'est à dire. GoogleApiClient) fournit une interface pour les comptes Google sur l'appareil et le Google Play services de base il n'a pas d'état par GoogleApiClient instance. Donc, une fois qu'un appareil de compte a été authentifié pour votre application, de nouvelles instances de GoogleApiClient d'accès sera le même état. GoogleApiClient est spécifiquement conçu pour être une légère façon d'accéder à la centrale de l'etat et géré par Google Play services.
Vous avez de la chance concernant l'accès des jetons! Google Play services s'occupe de toute la gestion des jetons pour vous. Ainsi, bien que les jetons d'accès ne durent qu'une heure, comme vous le dites, si vous essayez d'utiliser votre PlusClient pour accéder à une API de Google et votre jeton d'accès a expiré, Google Play services de manière transparente la demande d'un nouveau jeton d'accès pour vous et pour terminer l'appel.
Prendre un coup d'oeil à la première partie de ce Google I/O parler pour plus de détails:
http://www.youtube.com/watch?v=_KBHf1EODuk
0. TL;DR
Pour les impatients codeur, une version de travail de la mise en œuvre suivantes peuvent être trouvés sur GitHub. C'est la même réponse écrite sur un autre Un Débordement de pile post.
Après la réécriture de l'activité de connexion code plusieurs fois dans de nombreuses applications différentes, le plus facile (et pas très élégant) la solution a été de créer l'API Google client comme une Application de classe de l'objet. Mais, étant donné l'état de la connexion incidence sur les UX de flux, je n'ai jamais été heureux avec cette approche.
Réduire notre problème seulement pour les concept de raccordement, nous pouvons considérer que:
1. Modèle De Proxy
Depuis le
Connection
encapsule leGoogleApiClient
, il mettra en œuvre laConnectionCallbacks
etOnConnectionFailedListener
:Activités peuvent communiquer à la classe de Connexion à travers les méthodes
connect
,disconnect
, etrevoke
, mais leurs comportements sont décidées par l'état actuel. Les méthodes suivantes sont requises par l'état de la machine:2. État Modèle
C'est un modèle de comportement de la permettre à un objet à modifier son comportement lors de son état interne change. Le GoF Modèles de Conception de livre décrit la façon dont une connexion TCP peut être représenter par ce modèle (qui est aussi notre cas).
Un état à partir d'une machine d'état doit être un
singleton
, et de loin la méthode la plus simple de le faire en Java était de créerEnum
nomméState
comme suit:La
Connection
classe contient le contexte, c'est à dire l'état actuel, qui définit la façon dont leConnection
méthodesconnect
,disconnect
, etrevoke
va se comporter:3. Le Pattern Singleton
Car il n'est pas besoin de recréer cette classe à plusieurs reprises, nous offrir comme un singleton:
4. Motif Observable
La
Connection
classe étend JavaObservable
, donc 1 ou plusieurs activités peuvent observer les changements d'état:Connection(android.telecom)
ouConnection(java.sql)
ou est-ce autre chose?Pour toute personne lisant cette question, vous pouvez également cochez cette réponse par Ian Barber et également à celui ci-dessous, a répondu par Lee, qui explique les trois grandes façons de travailler avec Google, plus de connexion et de multiples activités que j'ai trouvé très utile effectivement.