Project

General

Profile

Interface avec Google

Plutôt que de faire tout nous même il est plus judicieux de laisser travailler les autres. Hors l'équipe Google fournit tout un ensemble de services qui peuvent nous être utiles (Agenda, partage de documents, visualisation de traces, etc). De plus ils fournissent une interface programmatique,

Il y a plusieurs groupes qui offrent ce genre de service mais Google étant le plus utilisé, c'est lui qui offre la plus grande souplesse.

Avantages de l'approche:
  • Économie de moyens. Cela ne sert à rien de refaire ce que les ingénieurs de Google on déjà fait. Cela permettra d'économiser toute la gestion graphique des agendas.
  • Ouverture du logiciel. Il n'y a pas besoin d'ouvrir GVV pour consulter les agendas de présence et planning de réservation. Cela peut être fait directement dans Google Agenda par exemple sur un smartphone.
  • Qualité: Ce qu'ils ont fait fonctionne bien
  • On bénéficira de l'amélioration continue des services Google
Inconvénients:
  • Ce n'est pas forcément très facile à configurer. J'ai essayé de décrire la procédure pas à pas. Néanmoins n'ayant pas eu à refaire de configuration pendant presque deux ans (une fois que cela fonctionne, on y touche plus) j'ai trouvé l'exercice difficile.

Comment cela marche ?

Pour l'utilisateur

Il n'y y a rien à faire. Il utilise GVV pour saisir les informations, et il peut utiliser GVV ou les services Google pour les visualiser.

Pour le développeur

Cette section est en cours de rédaction en parallèle avec le développement du système de planification des présences. Elle restera incomplète jusqu'à la fin des développements.

On utilise l'API Google pour PHP.

http://code.google.com/p/google-api-php-client/

La librairie google-api-php-client devra être copié sur le serveur. Une des premières choses à faire sera de vérifier sa compatibilité avec free. On peut la mettre à la racine du serveur ou sous application/third_party. La librairie fait environ 1.5 M.

Configuration

La configuration est la partie délicate. Il faudra guider la personne qui configure le logiciel à travers ces étapes sinon la partie planning, et accès aux documents ne fonctionnera pas. Il est également important que le programme se comporte correctement quand rien n'est configuré.

  1. Se connecter à son compte Google: (https://accounts.google.com/) ou créer son compte Google: (https://accounts.google.com/NewAccount?hl=FR)
  2. Dans le compte Google, il faut créer un calendrier au sein de ce compte: (https://www.google.com/calendar/)
  3. Il n'est pas obligatoire de rendre l'agenda public, mais s'il l'est il faut décocher "Afficher uniquement ma disponibilité (masquer les détails)" dans les paramètre de l'onglet "partager cet agenda".
  4. Aller dans la gestion des API google, et commencer par créer un projet (https://cloud.google.com/console/project)
  5. Choisissez le projet créé puis dans le menu "APIs & auth":
  6. Dans le sous-menu APIs, activer Calendar API.
  7. Dans le sous-menu Credential, créer un ID Client (cliquez sur "CREATE NEW CLIENT ID"), cochez 'Web application' (voir capture) et saisissez l'url de votre site (en http, pas https) + l'url du code
  8. Créez une clé (cliquez sur "CREATE NEW KEY" puis "Server key") (voir capture)

C'est l'information "Public key fingerprints" du "Service account" qu'il faudra mettre dans $config['api_key'].

Il y a un dialogue entre GVV et les serveurs Google pour renouveller le certificat autorisant à modifier le calendrier. Il faut prédéclarer l'URL ou Google enverra le nouveau certificat. La méthode qui sait quoi en faire s'appelle "code" dans le controleur "presences". L'URL de retour aura la forme : votre_nom_de_domaine/presences/code. Donc quelque chose comme "http://gvv.mondomaine.fr/presences/code".

Et voici le résultat

Client ID

Vous devez également générer une clé publique d'API.

  1. Dans l'onglet "Consent screen", sélectionnez votre email et "GVV calendar" comme Product name. C'est important.

Les informations générées sont à recopier dans le fichier config/google.php

Status

  • La gestion des présences fonctionne. Il est possible de
  • D'indiquer sa présence pour un jour donné
  • de supprimer une présence prévue
  • de visualiser les présences des copains dans Google Agenda
  • Le tout directement connecté sur GVV, sans rentrer de mot de passe supplémentaire
  • en plus de configurer google.php avec les identifiants de votre compte google, il faut spécifier le compte Google dans la configuration club. Chez nous la paramètre vaut