Nous voici dans la deuxième partie de notre tutoriel sur la mise en œuvre de l’API Google+ en PHP. Le premier opus nous a permis de récupérer votre profil Google+ afin de l’afficher par exemple sur votre site, en fournissant une démonstration de l’implémentation sur notre plateforme. En implémentant cette fonctionnalité nous avons abordé le problème d’authentification, en récupérant une clé API. Ainsi, nous laisserons cette fonctionnalité de côté dans cette deuxième partie.
Qu’allons-nous faire alors ? Si vous êtes déjà allé sur la page développeur de l’API Google+ vous avez sans doute remarqué que celle-ci nous offre un autre service nommé « Activities ». Ce dernier va nous permettre de récupérer vos différentes activités Google+ et ainsi afficher votre flux sur votre site. A titre d’exemple, j’utilise le même principe afin de récupérer mes tweets et les afficher sur le blog dans la partie « + On en parle … » un peu plus bas.
Allez entrons directement dans le vif du sujet.
Récupérer la liste de vos publications
Comme je l’expliquais ci-dessus je ne vais pas reprendre la phase d’authentification, donc une fois la clé API récupérée, nous pouvons commencer à réaliser notre service pour récupérer les publications.
« Activities »
Le service « Activities » proposé par l’API permet de récupérer le flux de publications d’un profil Google+. Chaque personne a un identifiant unique (ID
). Dans mon cas et dans la suite de ce tutoriel, l’identifiant de mon profil Google+ est : 116475369142621368056
.
Ce service propose trois méthodes :
list
: Liste de toutes les activités pour l’utilisateur choisiget
: Récupérer une activitésearch
: Recherche une activité publique
Note : On pourra regretter d’avoir accès à une méthode update
, qui nous permettrait de partager une activité.
Structure de données JSON
Une activité est représentée dans l’API Google+, tout comme pouvait l’être le profil dans la première partie, comme une structure de données JSON, comme indiqué ci-dessous. Voici l’ensemble des champs qu’une personne peut contenir :
{
"kind": "plus#activity",
"placeholder": boolean,
"title": string,
"published": datetime,
"updated": datetime,
"id": string,
"url": string,
"actor": {
"id": string,
"displayName": string,
"url": string,
"image": {
"url": string
}
},
"verb": string,
"object": {
"objectType": string,
"id": string,
"actor": {
"id": string,
"displayName": string,
"url": string,
"image": {
"url": string
}
},
"content": string,
"originalContent": string,
"url": string,
"replies": {
"totalItems": unsigned integer,
"selfLink": string
},
"plusoners": {
"totalItems": unsigned integer,
"selfLink": string
},
"resharers": {
"totalItems": unsigned integer,
"selfLink": string
},
"attachments": [
{
"objectType": string,
"displayName": string,
"id": string,
"content": string,
"url": string,
"image": {
"url": string,
"type": string,
"height": unsigned integer,
"width": unsigned integer
},
"fullImage": {
"url": string,
"type": string,
"height": unsigned integer,
"width": unsigned integer
},
"embed": {
"url": string,
"type": string
}
}
]
},
"annotation": string,
"crosspostSource": string,
"provider": {
"title": string
},
"access": {
"kind": "plus#acl",
"description": string,
"items": [
{
"type": string,
"id": string
}
]
},
"geocode": string,
"address": string,
"radius": string,
"placeId": string,
"placeName": string
}
[/sourcecode]
Note : Vous pouvez également retrouver la structure complète des propriétés ici.
Nous voilà prêts à récupérer les informations !
Appel de la méthode list
Comme annoncé précédemment trois méthodes sont possibles. Nous allons commencer par utiliser la méthode activities.list
et envoyer la requête HTTP afin de récupérer notre structure JSON.
Le principe est le même que pour la méthode people.get
. Nous utilisons deux méthodes PHP. La première, file_get_contents()
pour lire le fichier à partir de notre URL, la seconde json_decode()
, pour récupérer la chaîne reçue encodée en JSON et la convertir en une variable PHP, afin de permettre de manipuler facilement les données.
Concernant l’URL de l’appel HTTP voici comment elle doit être construite :
https://www.googleapis.com/plus/v1/people/ID/activities/TYPEACTIVITE
avec :
- ID : Identifiant de l’utilisateur pour lequel on veut obtenir les activités. Note : La valeur spécifique « me » peut être utilisée pour signifier l’utilisateur authentifié. Cela exige une authentification en utilisant un jeton qui a été accordé par OAuth
- TYPEACTIVITE : Type de partage des activités. Pour le moment la seule valeur possible est
public
.
Avec ces informations nous sommes prêt à récupérer nos activités :
<?php
$activites_googleplus_json = file_get_contents("https://www.googleapis.com/plus/v1/people/116475369142621368056/activities/public?key=VOTRECLEAPI");
$activites_googleplus = json_decode($activites_googleplus_json);
echo "<pre>";
print_r($activites_googleplus);
echo "</pre>";
?>
[/sourcecode]
Note : Les deux informations que vous pouvez modifier dans ce code, c’est l’identifiant du profil (ici 116475369142621368056) et la clé de votre API (ici votre VOTRECLEAPI).
stdClass Object
(
[kind] => plus#activityFeed
[nextPageToken] => eJyFUzFIw0AU_XdcaECHKK6FW3TSzlUQbs2g4uzSCKEgtdTUlOIgcdFBB0GdXAR16ySCoOAuri5u4qYgOOlq0uY3l7tLfRnu393_7737d-l9gdUOYGLD63iVhtesV9zmtl_3g8n3i6vfvYMqBeKC1fEaod8NwMnylsPNdT_Y752Vx07fDilAtwUwHbW3YBcSlIbRVBgAXXOX7msznc-b6zQVSg_8tvbyulpdPHneOZ9vPV7OPf2slL8Xjj5ad2FSbAGQWUBEoIAAOPFgx58BNjWtJuBSnE9iWSjkCVImkjKo7EzJz02dlBMjuS6xL5AvopIGwdDWvbIcE5MDLrNHqabokxClJusdHw4kDQXocAY2YhoLyZmx-xwNKx1z9FQwXC06kI6jUgyOTMCQ8T8UGyylIwY39iiHNNvTn4sJcrMojKMVRvtceB1p0zJRrW082TtWV4UqUWjA1u3qt-XEawVsQrUlPU47lyc0EVMmrjN0QIBFZmlVWXI0qsKkCsU1IrPKc8WU4l-AbHkvf84JRa4
[selfLink] => https://www.googleapis.com/plus/v1/people/116475369142621368056/activities/public?
[nextLink] => https://www.googleapis.com/plus/v1/people/116475369142621368056/activities/public?maxResults=20&pageToken=eJyFUzFIw0AU_XdcaECHKK6FW3TSzlUQbs2g4uzSCKEgtdTUlOIgcdFBB0GdXAR16ySCoOAuri5u4qYgOOlq0uY3l7tLfRnu393_7737d-l9gdUOYGLD63iVhtesV9zmtl_3g8n3i6vfvYMqBeKC1fEaod8NwMnylsPNdT_Y752Vx07fDilAtwUwHbW3YBcSlIbRVBgAXXOX7msznc-b6zQVSg_8tvbyulpdPHneOZ9vPV7OPf2slL8Xjj5ad2FSbAGQWUBEoIAAOPFgx58BNjWtJuBSnE9iWSjkCVImkjKo7EzJz02dlBMjuS6xL5AvopIGwdDWvbIcE5MDLrNHqabokxClJusdHw4kDQXocAY2YhoLyZmx-xwNKx1z9FQwXC06kI6jUgyOTMCQ8T8UGyylIwY39iiHNNvTn4sJcrMojKMVRvtceB1p0zJRrW082TtWV4UqUWjA1u3qt-XEawVsQrUlPU47lyc0EVMmrjN0QIBFZmlVWXI0qsKkCsU1IrPKc8WU4l-AbHkvf84JRa4
[title] => Plus Public Activity Feed for Yohann Poiron
[updated] => 2011-09-21T18:38:42.649Z
[id] => tag:google.com,2010:/plus/people/116475369142621368056/activities/public
[items] => Array
(
[0] => stdClass Object
(
[kind] => plus#activity
[title] => Concours : Batterie d’appoint Novodio PureWatt icon
[published] => 2011-09-21T16:17:27.000Z
[updated] => 2011-09-21T16:17:27.874Z
[id] => z13sspkgatrsfprqm04ccbshfzr3zbujegk
[url] => https://plus.google.com/116475369142621368056/posts/cFRVYU5qWzL
[actor] => stdClass Object
(
[id] => 116475369142621368056
[displayName] => Yohann Poiron
[url] => https://plus.google.com/116475369142621368056
[image] => stdClass Object
(
[url] => https://lh3.googleusercontent.com/-hTl26oxYXu8/AAAAAAAAAAI/AAAAAAAAAAA/-nqd87SUsqE/photo.jpg
)
)
[verb] => post
[object] => stdClass Object
(
[objectType] => note
[content] => Concours : Batterie d’appoint Novodio PureWatt icon
[url] => https://plus.google.com/116475369142621368056/posts/cFRVYU5qWzL
[replies] => stdClass Object
(
[totalItems] => 0
)
[plusoners] => stdClass Object
(
[totalItems] => 0
)
[resharers] => stdClass Object
(
[totalItems] => 0
)
[attachments] => Array
(
[0] => stdClass Object
(
[objectType] => article
[displayName] => Concours : Batterie d’appoint Novodio PureWatt icon | Le blog des nouvelles technologies : Web, Technologies, Développement, Interopérabilité
[content] => Avis aux possesseurs d’iPhone et iPod, cet article est pour vous. Qui oserait dire qu’il n’est jamais tombé en rade de batterie dans la journée ? Vous l’avez
[url] => https://www.blog-nouvelles-technologies.fr/6637/concours-batterie-dappoint-novodio-purewatt-icon/
)
[1] => stdClass Object
(
[objectType] => photo
[image] => stdClass Object
(
[url] => http://images0-focus-opensocial.googleusercontent.com/gadgets/proxy?container=focus&gadget=a&resize_h=100&url=http%3A%2F%2Fwww.blog-nouvelles-technologies.fr%2Fwp-content%2Fthemes%2FDesign-folio%2Ftimthumb.php%3Fsrc%3Dhttp%3A%2F%2Fwww.blog-nouvelles-technologies.fr%2Fwp-content%2Fuploads%2F2011%2F09%2Fconcours-batterie-d-appoint-novodio-purewatt-icon.jpg%26h%3D200%26w%3D200%26zc%3D1
[type] => image/jpeg
)
[fullImage] => stdClass Object
(
[url] => https://www.blog-nouvelles-technologies.fr/wp-content/themes/Design-folio/timthumb.php?src=https://www.blog-nouvelles-technologies.fr/wp-content/uploads/2011/09/concours-batterie-d-appoint-novodio-purewatt-icon.jpg&h=200&w=200&zc=1
[type] => image/jpeg
)
)
)
)
[provider] => stdClass Object
(
[title] => Google+
)
[access] => stdClass Object
(
[kind] => plus#acl
[items] => Array
(
[0] => stdClass Object
(
[type] => public
)
)
)
)
)
)
[/sourcecode]
En fait, le résultat affiché ci-dessus n’est pas vraiment ce que l’on reçoit lors de l’appel. Pourquoi ? Tout simplement car ce dernier a été tronqué pour l’affichage. Ainsi je vous ai copié une seule activité au lieu des dix-neufs reçues. En effet, la structure retournée par l’API est assez « couteuse ».
Maintenant nous allons voir comment extraire les différentes informations d’une activité.
Extraction des informations nécessaires
Dans la structure de chaque activité on retrouve : un acteur (code
), le type d’action publiée (verb
) et l’objet (object
). Par défaut, le verb
est post
, autrement dit un contenu publié dans le flux. Les autres possibilités sont checkin
pour l’enregistrement à un emplacement, et part
pour le partage d’une activité.
De plus, la valeur par défaut de l’objectType
d’une note, c’est-à-dire le type de l’objet est note
. La seconde possibilité est activity
pour indiquer qu’il s’agit d’une activité Google+. Le texte de la note est précisé dans l’attribut content
et les possibles photo, vidéo ou encore l’emplacement sont spécifiés dans un tableau attachments
. La propriété access
spécifie avec qui l’activité est partagée.
Note : Pour le moment on peut récupérer seulement les activités de type public
.
En partant de cette analyse nous sommes prêts à récupérer les informations les plus utiles. Dans notre exemple, nous allons récupérer celles-ci :
published
: Date de publication. Cet attribut produit un timestamp conforme à la norme RFC 3339. C’est le seul attribut qui nécessite une conversion en PHP. Pour cela, nous allons utiliser la fonctiondate(DATE_ATOM)
qui produit un timestamp au format RFC 3339.
strftime("%d-%m-%Y %H:%M:%S", strtotime(date(DATE_ATOM, strtotime($activite->published))))
[/sourcecode]
id
: L’identifiant
$activite->id
[/sourcecode]
url
: L’URL du lien
$activite->url
[/sourcecode]
actor.displayName
: Le nom de l’acteur qui a publié l’activité
$activite->actor->displayName
[/sourcecode]
object.content
: Le titre
$activite->object->content
[/sourcecode]
object.replies
: Le nombre de commentaires
$activite->object->replies->totalItems
[/sourcecode]
object.plusoners
: Le nombre de « +1 »
$activite->object->plusoners->totalItems
[/sourcecode]
object.resharers
: Le nombre de partage
$activite->object->resharers->totalItems
[/sourcecode]
Affichage de la structure
Nous venons de récupérer toute notre structure, nous avons juste à afficher les informations. Voici un exemple d’affichage :
Note : Vous pourrez le retrouver en visualisant la démo et en téléchargeant les sources.
Appel de la méthode get
Contrairement au service « People » proposé par l’API Google+, nous disposons d’une deuxième méthode. Cette dernière nous permet de récupérer une et une seule activité à partir de son identifiant (id
).
Pour l’appeler c’est très simple il suffit de construire l’URL comme suit :
https://www.googleapis.com/plus/v1/activities/ID
avec :
- ID : Identifiant de l’activité que l’on souhaite récupérer
Avec cette information nous sommes prêts à récupérer notre activité :
<?php
$activite_googleplus_json = file_get_contents("https://www.googleapis.com/plus/v1/activities/z13cgx2wxmrcy3o1d221y3ezxsztynun4/public?key=VOTRECLEAPI");
$activite_googleplus = json_decode($activite_googleplus_json);
echo "<pre>";
print_r($activite_googleplus);
echo "</pre>";
?>
[/sourcecode]
En cas de succès, cette méthode renvoie une ressource « activité » dans le corps de la réponse, autrement dit la même chose que précédemment. En revanche, nous n’aurons pas besoin de réaliser une boucle sur les résultats, car seule l’activité demandée sera retournée. Hum… heureusement 🙂
Au moment où j’avais terminé cet article en tant que brouillon, il n’y avait que deux méthodes : list
et get
. Or, Google a annoncé avant-hier de nouvelles fonctionnalités dans leur API. En outre, on peut désormais accéder aux résultats de recherche au sein des activités publiques, ainsi que de la liste des utilisateurs via les méthodes activities.search
et people.search
.
Donc allons-y, complétons cet article avec la méthode search
du service « Activities ».
Appel de la méthode search
La dernière méthode ajoutée par Google nous permet de rechercher des activités publiques. Si l’ensemble des résultats retournés sont de trop grandes tailles, ils seront paginés. Pour obtenir les résultats de recherche les plus récents, n’utilisez pas le paramètre pageToken
plus vieux que cinq minutes. Au lieu de cela, redémarrez la pagination en répétant la demande initiale, en omettant le paramètre pageToken
.
Pour l’appeler c’est très simple il suffit de construire l’URL comme suit :
https://www.googleapis.com/plus/v1/activities
avec pour paramètre GET
principal :
maxResults
: Le nombre maximum d’activités à inclure dans la réponse, utilisé pour la paginationorderBy
: Spécifie la façon de retourner les résultats de recherche. Les valeurs acceptables sont :best
(en fonction de la pertinence) etrecent
(date de publication)pageToken
: Le token de continuation, utilisé pour les grands résultatsquery
: Texte de la chaîne de recherche
En cas de succès, cette méthode renvoie un corps de réponse avec la structure suivante :
{
"kind": "plus#activityFeed",
"nextPageToken": string,
"selfLink": string,
"nextLink": string,
"title": string,
"updated": datetime,
"id": string,
"items": [
activities Resource
]
}
[/sourcecode]
Avec ces informations nous sommes prêts à récupérer nos résultats de recherche :
<?php
$activite_googleplus_json = file_get_contents("https://www.googleapis.com/plus/v1/activities/z13cgx2wxmrcy3o1d221y3ezxsztynun4/public?query=API&key=VOTRECLEAPI");
$activite_googleplus = json_decode($activite_googleplus_json);
echo "<pre>";
print_r($activite_googleplus);
echo "</pre>";
?>
[/sourcecode]
Nous donnant un résultat comme ceci (volontairement tronqué) :
stdClass Object
(
[kind] => plus#activityFeed
[nextPageToken] => CjAI8OVIEiiVmLMClZizArDetAPK8u8Dk-OJBpPjiQbn-ogH5_qIB_uH5gjL2foKGAIKKhIo5ruHA-a7hwOhiL0FgaS4CIGkuAjgg4kJkePrCZHj6wn9rL8Lo6u3DAoqEiiPr7kB_vPAAeTv8wGS2f4B8O-LAtiUlAP55NADvoX4A4L3pATZs6cECicSJYyiCv7fIPzZRajZiQG6sZ4Bv9O4AfX_5QHEyOkCjJKMA9npjgMKKBImn_5in_5imJyoAfXqqQKd87ACzuXsAs7l7ALOjPICzozyAuTp2gUKJxIl–JH–JHjd93lYndAfLP9gGUu6AC-NDUA4aJ9APXn40F3oW4BQonEiXA2jacxzyLsUfiqtEBtN3nAZC3-gKt9aAD5ZKkA8L7-gO0sYQECi4Iz9N4EiaWk0n-0Uvs-a4ByqGMAvbaowLO9PECzvTxArXi2QPl9a4E5fWuBBgBEJTPsvQEGJT-svQE
[selfLink] => https://www.googleapis.com/plus/v1/activities?query=API&maxResults=10&pageToken=CjAI8OVIEiiVmLMClZizArDetAPK8u8Dk-OJBpPjiQbn-ogH5_qIB_uH5gjL2foKGAIKKhIo5ruHA-a7hwOhiL0FgaS4CIGkuAjgg4kJkePrCZHj6wn9rL8Lo6u3DAoqEiiPr7kB_vPAAeTv8wGS2f4B8O-LAtiUlAP55NADvoX4A4L3pATZs6cECicSJYyiCv7fIPzZRajZiQG6sZ4Bv9O4AfX_5QHEyOkCjJKMA9npjgMKKBImn_5in_5imJyoAfXqqQKd87ACzuXsAs7l7ALOjPICzozyAuTp2gUKJxIl–JH–JHjd93lYndAfLP9gGUu6AC-NDUA4aJ9APXn40F3oW4BQonEiXA2jacxzyLsUfiqtEBtN3nAZC3-gKt9aAD5ZKkA8L7-gO0sYQECi4Iz9N4EiaWk0n-0Uvs-a4ByqGMAvbaowLO9PECzvTxArXi2QPl9a4E5fWuBBgBEJTPsvQEGJT-svQE
[nextLink] => https://www.googleapis.com/plus/v1/activities?query=API&maxResults=10&pageToken=CjAI8OVIEiiVmLMClZizArDetAPK8u8Dk-OJBpPjiQbn-ogH5_qIB_uH5gjL2foKGAIKKhIo5ruHA-a7hwOhiL0FgaS4CIGkuAjgg4kJkePrCZHj6wn9rL8Lo6u3DAoqEiiPr7kB_vPAAeTv8wGS2f4B8O-LAtiUlAP55NADvoX4A4L3pATZs6cECicSJYyiCv7fIPzZRajZiQG6sZ4Bv9O4AfX_5QHEyOkCjJKMA9npjgMKKBImn_5in_5imJyoAfXqqQKd87ACzuXsAs7l7ALOjPICzozyAuTp2gUKJxIl–JH–JHjd93lYndAfLP9gGUu6AC-NDUA4aJ9APXn40F3oW4BQonEiXA2jacxzyLsUfiqtEBtN3nAZC3-gKt9aAD5ZKkA8L7-gO0sYQECi4Iz9N4EiaWk0n-0Uvs-a4ByqGMAvbaowLO9PECzvTxArXi2QPl9a4E5fWuBBgBEJTPsvQEGJT-svQE&maxResults=10&pageToken=CjAI8OVIEiiVmLMClZizArDetAPK8u8Dk-OJBpPjiQbn-ogH5_qIB_uH5gjL2foKGAIKKhIo5ruHA-a7hwOhiL0FgaS4CIGkuAjgg4kJkePrCZHj6wn9rL8Lo6u3DAoqEiiPr7kB_vPAAeTv8wGS2f4B8O-LAtiUlAP55NADvoX4A4L3pATZs6cECicSJYyiCv7fIPzZRajZiQG6sZ4Bv9O4AfX_5QHEyOkCjJKMA9npjgMKKBImn_5in_5imJyoAfXqqQKd87ACzuXsAs7l7ALOjPICzozyAuTp2gUKJxIl–JH–JHjd93lYndAfLP9gGUu6AC-NDUA4aJ9APXn40F3oW4BQonEiXA2jacxzyLsUfiqtEBtN3nAZC3-gKt9aAD5ZKkA8L7-gO0sYQECi4Iz9N4EiaWk0n-0Uvs-a4ByqGMAvbaowLO9PECzvTxArXi2QPl9a4E5fWuBBgBEJTPsvQEGJT-svQE
[title] => Plus Search for API
[updated] => 2011-10-05T20:33:25.007Z
[id] => tag:google.com,2010:buzz-search-feed:xeSBl0BkPKeDdGGElvHcdg
[items] => Array
(
[0] => stdClass Object
(
[kind] => plus#activity
[title] => The Federal Reserve has an API, does this mean I can transfer some funds to my own bank account?
[published] => 2011-10-05T20:33:24.000Z
[updated] => 2011-10-05T20:33:25.007Z
[id] => z125tdobrlnqy1mwl04chdmiaqn3xhr4scg
[url] => https://plus.google.com/104758707687202300679/posts/RMRZ1smWjGv
[actor] => stdClass Object
(
[id] => 104758707687202300679
[displayName] => Michael Carrano
[url] => https://plus.google.com/104758707687202300679
[image] => stdClass Object
(
[url] =>
)
)
[verb] => post
[object] => stdClass Object
(
[objectType] => note
[content] => The Federal Reserve has an API, does this mean I can transfer some funds to my own bank account?
[url] => https://plus.google.com/104758707687202300679/posts/RMRZ1smWjGv
[replies] => stdClass Object
(
[totalItems] => 0
[selfLink] => https://www.googleapis.com/plus/v1/activities/z125tdobrlnqy1mwl04chdmiaqn3xhr4scg/comments
)
[plusoners] => stdClass Object
(
[totalItems] => 0
[selfLink] => https://www.googleapis.com/plus/v1/activities/z125tdobrlnqy1mwl04chdmiaqn3xhr4scg/people/plusoners
)
[resharers] => stdClass Object
(
[totalItems] => 0
[selfLink] => https://www.googleapis.com/plus/v1/activities/z125tdobrlnqy1mwl04chdmiaqn3xhr4scg/people/resharers
)
)
[provider] => stdClass Object
(
[title] => Google+
)
[access] => stdClass Object
(
[kind] => plus#acl
[items] => Array
(
[0] => stdClass Object
(
[type] => public
)
)
)
)
)
)
[/sourcecode]
Cette deuxième partie s’achève ! Puisque Google a gentiment mis à jour son API, vous aurez le droit à une troisième partie, sur comment utiliser l’API pour récupérer les commentaires. De plus en plus intéressant non ?
[samples id= »6632″]
Conclusion
Ces deux tutoriels (première partie ici) nous ont permis de mettre en oeuvre rapidement et facilement l’API Google+ précédemment sortie.
Ainsi, vous avez vu comment récupérer les informations nécessaires à l’affichage de votre profil Google+ et y associer vos activités, autrement dit vos publications faites sur le service social.
Comme vous pouvez le voir, aucune connaissance particulière n’est demandée pour réaliser facilement une petite application ou un plugin. D’ailleurs, nous devrions voir très prochainement de multiples services implémentant cette API.
Seule chose que l’on peut noter et qui reste très contraignante, c’est l’absence de méthode permettant de mettre à jour son profil mais également de publier une activité dans son flux. Même si l’on devrait y avoir accès prochainement pour le moment l’utilité de l’API semble restreinte.
Je pense que l’annonce de cette API permet aux développeurs de commencer à développer pour la plateforme de développement Google+. J’espère réellement voir les caractéristiques ajoutées prochainement afin que les développeurs puissent travailler rapidement à l’élaboration d’un client Google+ !
Espérons que les googlers sauront faire évoluer l’API rapidement pour permettre de tels usages, et à de vraies applications utiles d’émerger.
Et vous, avez-vous déjà mis en œuvre cette API ? Un projet déjà lancé ? Qu’avez-vous pensé de ces deux tutoriels ? Répondent-ils à vos attentes ? Venez répondre à ces questions dans la partie commentaires…