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
SI PAS GglConnecte(googleConnexion) ALORS
Erreur(ErreurInfo(ErreurDétectée))
SINON
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
googleConnexion.ClientID=gsGoogleClientID
googleConnexion.ClientSecret=gsGoogleClientSecret
bufGoogleConnexion est un Buffer
sNomFichierTokenGoogleest une chaîne=fRepDonnées()+"\tokengoogle.bin"
SI fFichierExiste(sNomFichierTokenGoogle) ALORS
QUAND EXCEPTION DANS
Désérialise(googleConnexion,fChargeBuffer(sNomFichierTokenGoogle),psdBinaire)
FAIRE
FIN
FIN
SI PAS GglConnecte(googleConnexion,gglServiceAgenda) ALORS
Erreur(ErreurInfo())
SINON
Sérialise(googleConnexion,bufGoogleConnexion,psdBinaire)
fSauveBuffer(sNomFichierTokenGoogle,bufGoogleConnexion)
Info("Connecté")
FIN
|