IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Google Calendar API + Service Account = Invalid_grant


Sujet :

APIs Google

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut Google Calendar API + Service Account = Invalid_grant
    Bonjour,

    Je dispose d'un Google Apps gratuit (j'ai souscrit avant que ça devienne payant).

    Dessus, j'ai activé l'API Calendar.
    J'ai créé un projet d'API de type Service Account.
    Dans la console d'admin j'ai autorisé les requêtes sur l'adresse des API.

    J'ai ensuite développé une application qui lit/modifie mon agenda.
    Aucun problème, ça fonctionne parfaitement.

    Maintenant, je veux déployer mon programme chez un client.
    J'ai tout configuré exactement de la même façon, à l'aide non pas du compte admin, mais d'un compte administrateur créé pour l'occasion.
    Ce compte a accès à un certain nombre d'autres calendriers, que je peux voir/modifier par l'interface web agenda.

    Et pourtant mon programme plante avec une erreur "invalid_grant".

    Mon PC est à l'heure.
    Je n'ai pas de souci de refresh token étant donné que c'est un service account.

    D'où peut venir le problème ?

    Aussi, comment puis-je supprimer complètement puis recréer mon projet API dans la console d'admin ?

    Voici l'extrait de mon mon code (C#) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
            public List<Appointment> LoadAppointments(User user)
            {
                // key = chemin d'accès à mon fichier "P12"
                // password = "notasecret"
                // googleid = adresse mail qui se termine en "@developer.gserviceaccount.com"
                // user.ExtertnalLogin = adresse mail du compte à consulter
                X509Certificate2 certificate = new X509Certificate2(key, password, X509KeyStorageFlags.Exportable);
                ServiceAccountCredential credential = new ServiceAccountCredential(
                   new ServiceAccountCredential.Initializer(googleid)
                   {
                       Scopes = new[] { CalendarService.Scope.Calendar },
                       User = admin,
                   }.FromCertificate(certificate));
     
                service = new CalendarService(new BaseClientService.Initializer()
                {
                    HttpClientInitializer = credential,
                    ApplicationName = "<AppName>",
                });
     
                EventsResource.ListRequest req = service.Events.List(user.ExtertnalLogin);
                req.ShowDeleted = true;
                req.SingleEvents = true;
                req.TimeZone = "UTC";
                req.MaxResults = 1000;
                req.UpdatedMin = LastSync;
                req.TimeMin = DateTime.Today.AddMonths(-2);
     
                Events events;
                try
                {
                    events = req.Execute();
                }
                catch (Exception e) // L'erreur se produit ici
                {
                    Console.WriteLine(e.Message);
                    return null;
                }
     
            [...]
     
            }
    Je sais plus quoi faire...
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Après avoir fait sècher le support de Google sur le sujet, j'ai finalement trouvé la source du problème.

    Si on crée un calendrier, mais qu'on ne s'y connecte pas manuellement (depuis l'application Google Agenda) alors il est dans un statut qui rend impossible son utilisation avec les API.

    Dès qu'on s'est loggué une fois manuellement sur le calendrier, l'erreur de connexion aux API disparaît.
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. google calendar api
    Par dknafoweb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 07/09/2014, 01h54
  2. [Google Calendar API V3] Passage de local a serveur ne fonctionne plus
    Par fabs570 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 14/08/2014, 12h36
  3. [Web Service] Google Apps Calendar et Service Account
    Par zevince dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/06/2013, 18h05
  4. [Web Service][Google Calendar API] Requetes http get
    Par alexandreb3 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/05/2010, 15h50
  5. [adobe AIR] Interaction avec Google calendar API
    Par Sumoner dans le forum Flex
    Réponses: 3
    Dernier message: 01/12/2009, 16h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo