Les fonctions de gestion des contacts Google sont proposées depuis la version 14 de WINDEV. Ces fonctions reposent sur l'API Contacts de Google. Cette API est maintenant dépréciée par Google, et remplacée par la nouvelle API People. L'utilisation des fonctions ggl* liées aux contacts peut donc échouer avec la réponse "Contacts API is being deprecated".

 

La nouvelle API People n'est pas le prolongement de l'API Contacts. Les structures de données notamment n'ont rien en commun. Il n'est donc pas possible d'adapter les fonctions ggl* existantes, et le type gglContact, afin qu'ils permettent l'utilisation de la nouvelle API People.

 

Les applications qui récupèrent des contacts Google doivent donc nécessairement être adaptées. Les fonctions ggl* seront à remplacer par des appels de la fonction RESTEnvoie après une authentification.

 

Les syntaxes des appels sont détaillées sur le site de Google :
https://developers.google.com/people/api/rest

 

Voici un exemple d'appel pour obtenir la liste des contacts :

 

OAuth2Params est un OAuth2Paramètres
Token est un AuthToken

ReqListeContact est un restRequête

RéponseListeContact est un httpRéponse

ListeContact est un JSON


OAuth2Params.ClientID = "<id client>.apps.googleusercontent.com"
OAuth2Params.ClientSecret = "<clé>"
OAuth2Params..URLAuth = "https://accounts.google.com/o/oauth2/auth"
OAuth2Params..URLRedirection = "http://localhost:15000"
OAuth2Params..URLToken = "https://oauth2.googleapis.com/token"
OAuth2Params..Scope = "https://www.googleapis.com/auth/contacts.readonly"

Token = AuthIdentifie(OAuth2Params) // Réutilisation token possible

ReqListeContact..Méthode = httpGet
ReqListeContact..ContentType = "application/json"
ReqListeContact.URL = "https://people.googleapis.com/v1/people/me/connections?personFields=names,emailAddresses"
ReqListeContact..AuthToken = Token


RéponseListeContact = RESTEnvoie(ReqListeContact)

SI RéponseListeContact.CodeEtat = 200 ALORS

ListeContact = RéponseListeContact..Contenu
Trace("Nombre de contacts : "+ListeContact.totalPeople)

POUR nContact = 1 _À_ ListeContact.connections..Occurrence

Trace("Contact "+nContact+"/"+ListeContact.connections..Occurrence)
Trace(" >> "+ListeContact.connections[nContact].resourceName)

POUR nListe = 1 _À_ ListeContact.connections[nContact].names..Occurrence

Trace(" Nom "+nListe+"/"+ListeContact.connections[nContact].names..Occurrence)
Trace(" >> "+ListeContact.connections[nContact].names[nListe].displayName)

FIN

POUR nListe = 1 _À_ ListeContact.connections[nContact].emailAddresses..Occurrence

Trace(" Adresse email "+nListe+"/"+ListeContact.connections[nContact].emailAddresses..Occurrence)
Trace(" >> "+ListeContact.connections[nContact].emailAddresses[nListe].value)
Trace(" >> "+ListeContact.connections[nContact].emailAddresses[nListe].type)

FIN
FIN

SINON
Erreur("Google n'a pas pu traiter la requête : ", RéponseListeContact..CodeEtat, RéponseListeContact..Contenu)
FIN

 

Les types utiles les plus courants sont :

 

Si l'application doit explorer de nombreuses informations dans les contacts, il sera opportun de faire connaître la structure des fichiers JSON de Google au projet. De cette manière il sera possible de profiter de la complétion de l'éditeur de code, et du POUR TOUT ELEMENT de parcours des tableaux. Cette technique peut s'utiliser pour toute interrogation qui retourne un contenu formaté en JSON :

  • exécuter le code ci-dessus, en ajoutant la création d'un JSON avec la réponse :

    ListeContact = RéponseListeContact..Contenu
    fSauveTexte(fRepDonnées()+[fSep]+"GoogleContact.json",RéponseListeContact..Contenu)
    LanceAppliAssociée(fRepDonnées()+[fSep]+"GoogleContact.json")
    VersPressePapier(fRepDonnées()+[fSep]+"GoogleContact.json")

  • dans les descriptions externes du projet, importer le fichier GoogleContact.json obtenu :



    On a alors toute l'arborescence du JSON :



  • Déclarer des variables à partir des différents noeuds du JSON :

    ListeContact est un JSON <description="GoogleContact">
    ListeNom est un JSON <description="GoogleContact.connections.names">
    ListeAdresseEmail est un JSON <description="GoogleContact.connections.emailAddresses">

  • Utiliser POUR TOUT ELEMENT :

    ListeContact = RéponseListeContact.Contenu
    Trace("Nombre de contacts : "+ListeContact.totalPeople)

    POUR TOUT ELÉMENT UnePersonne DE ListeContact.connections
    POUR TOUT ELÉMENT ListeNom DE UnePersonne.names
    Trace(ListeNom.displayName)
    FIN

    POUR TOUT ELÉMENT ListeAdresseEmail DE UnePersonne.emailAddresses
    Trace(ListeAdresseEmail.value+" ("+ListeAdresseEmail.type+")")
    FIN
    FIN

 

< Retour

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