19 novembre 2014
publié par 
A partir du mois d'avril 2015, Google va imposer l'utilisation de l'authentification Oauth 2.0 pour l'accès à ses services. Ce mode d'authentification améliore la sécurité et propose de nouvelles possibilités :
  • l'utilisateur final décide d'autoriser l'accès ou non à des services,
  • l'authentification en deux étapes (sms) est disponible...
Ce changement n'est pas transparent pour les applications qui utilisent les services Google avec les fonctions Ggl*. En effet, historiquement les fonctions Ggl utilisaient l'API "ClientLogin" comme mécanisme d'authentification. Avec ce dernier Google ne demandait que l'envoi d'un couple utilisateur/mot de passe, qui permettait d'obtenir un "token" de session à utiliser pour l'accès aux API. Avec l'authentification OAuth 2.0, il faut dans un premier temps "déclarer" l'application sur sa console développeur Google. Cela permet d'obtenir de Google un identifiant client, ainsi qu'un code secret propre à l'application : ils servent à la place du couple utilisateur/mot de passe à se connecter.

La fonction de connexion GglConnecte et le type de variable gglconnexion ont donc été adaptés pour cette échéance d'avril 2015 :

Toutes les applications qui utilisent des services de Google via les fonctions Ggl* du Wlangage
devront être donc recompilées avec l'une de ces versions pour continuer
à utiliser les services de Google à partir d'avril 2015.


Recommandation importante : avec cette nouvelle syntaxe adaptée à l'authentification OAuth 2.0, il est fortement conseillé d'appeler explicitement la fonction GglConnecte en donnant en paramètre l'ensemble des services Google nécessaires à l'application (syntaxe 2 de la fonction GglConnecte). Sans cela, l'utilisateur final de l'application devra en plus de la connexion initiale, valider une demande d'autorisation lorsqu'il tentera d'accéder à un service Google. En effet, toutes les fonctions Ggl* sont adaptées afin d'ouvrir automatiquement une fenêtre de connexion ou d'autorisation si l'application n'est pas connectée ou autorisées à accéder à Google ou l'un de ses services. Il est donc préférable via GglConnecte de provoque une connexion unique incluant l'autorisation d'utilisation des services désirés.

Voici les liens directs vers les pages d'aide qui ont été mises à jour :

Aide des différentes jeux de fonctions d'utilisation des services Google :

Et enfin voici un exemple de code de connexion "avant / après" :

Exemple de code de connexion type "ClientLogin" utiliser jusqu'à présent pour se connecter à Google :

googleConnexion est un gglConnexion
googleConnexion.Email=gsGoogleCompte
googleConnexion.MotDePasse=gsGoogleMotDePasseCompte
googleConnexion.NomApplication=gsGoogleNomApplication
//Connexion au compte Google
SI PAS GglConnecte(googleConnexion) ALORS
Erreur(ErreurInfo(ErreurDétectée))
SINON
//Récupération de l'agenda par défaut
AgendaExistant est un gglAgenda
AgendaExistant= GglRécupèreAgenda(googleConnexion)
SI ErreurDétectée ALORS
Erreur(ErreurInfo(ErreurDétectée))
SINON
Info("Agenda récupéré !")
FIN
FIN



Exemple de code de connexion nécessaire pour une authentification OAuth 2.0 (version minimale requise 190056S + mise à à jour 89 795 des ressources pratiques :

googleConnexion est un gglConnexion googleConnexion.Email=gsGoogleCompte //de la forme : nomutilisateur@gmail.com
googleConnexion.ClientID=gsGoogleClientID // de la forme : 568705434218-sed6r7rgd7alcnbehs67f1k5s6ixqz84q.apps.googleusercontent.com
googleConnexion.ClientSecret=gsGoogleClientSecret // de la forme : kshKqXQPxUWmGLDiyBcmrCR2
// Pour créer un ID et un secret il faut :
// 1 - Avoir un compte Google (par forcément celui auquel on se connecte, ce sera le compte associé à cette application)
// 2 - Crée un projet dans la console Google (https://code.google.com/apis/console)
// 3 - Crée un projet dans la console en indiquant l'identifiant voulez (avec les restrictions Google : entre 6 et 30 caractères, que des minuscules...)
// note : ce n'est pas cette identifiant qu'il faudra utiliser
// 4 - Sélectionner le projet dans la console Google et choisissez "Activer une API", et activez "Calendar API" (et "Contact API" si vous utilisez les contacts)
// 5 - Dans la console aller sur "Identifiant", puis "Créer un identifiant client", et "Application installée"
// ==> la Google donne l'identifiant et la clé secrète

//Il faut mémoriser et le cas échéant restaurer les informations de connexion pour éviter de re- demander l'autorisation à chaque connexion
bufGoogleConnexion est un Buffer
sNomFichierTokenGoogleest une chaîne=fRepDonnées()+"\tokengoogle.bin"

//on a précédemment mémorisé une connexion ?
SI fFichierExiste(sNomFichierTokenGoogle) ALORS
//On restaure la connexion avec les autorisation qu'elle a pour ne pas re-demander à chaque fois les autorisations
QUAND EXCEPTION DANS
Désérialise(googleConnexion,fChargeBuffer(sNomFichierTokenGoogle),psdBinaire)
FAIRE
//Echec de la dé-sérialisation, le fichier est peut-être endommagé
//=> il y aura une nouvelle demande d'authentification à l'utilisateur
FIN
FIN

//Connexion au compte Google
SI PAS GglConnecte(googleConnexion,gglServiceAgenda) ALORS //==> Ici la première fois une fenêtre d'authentification va s'ouvrir à l'utilisateur
Erreur(ErreurInfo())
SINON
//Mémorisation de la connexion Google avec les informations d'autorisation
Sérialise(googleConnexion,bufGoogleConnexion,psdBinaire)
fSauveBuffer(sNomFichierTokenGoogle,bufGoogleConnexion)
Info("Connecté")
FIN


< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée