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

C# Discussion :

[Google API] Comment authentifier l'application sans action utilisateur ?


Sujet :

C#

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 147
    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 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut [Google API] Comment authentifier l'application sans action utilisateur ?
    Bonjour,

    Je dois écrire une application qui va accéder à différents calendriers Google Calendar.

    C'est une application Back Office, donc sans interaction avec l'utilisateur (il s'agit de synchroniser des éléments d'un outil avec le calendrier de plusieurs utilisateurs).

    Avec les API GData, j'arrivais à me connecter directement au calendrier en indiquant l'adresse et le mot de passe de chaque utilisateur directement dans le programme.

    En revanche, que ce soit par API ou directement par requêtes REST, avec les API V3, je n'arrive pas à trouver une méthode me permettant de passer outre la popup d'authentification Google.

    Savez-vous où je peux trouver un petit exemple de code qui utilise une autre méthode, afin de s'identifier sans interaction utilisateur ?
    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 147
    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 147
    Points : 7 392
    Points
    7 392
    Billets dans le blog
    1
    Par défaut
    J'ai fini par trouver quelque chose qui marchouille plus ou moins pas du tout.

    J'utilise 3 comptes GMail.

    Pour faire simple, on va dire "email1@gmail.com", "email2@gmail.com", "email3@gmail.com".

    Sur mon PC, Google Chrome est confignuré pour se connecter automatiquement avec mon compte email2@gmail.com. C'est anodin, mais attendez la suite...

    Je me suis connecté sur chacun des 3 comptes.
    Dans Google API Cloud Console, j'ai :
    - activé l'API "Calendar".
    - créé un projet "UpdateSync" et téléchargé le fichier JSON associé

    J'ai stocké mes trois fichiers dans un répertoire de mon application.

    Je boucle dessus. Dans le code ci-dessous, ils sont identifiés par "user.Email"

    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
     
                UserCredential credential;
                using (var stream = new FileStream(string.Format("credentials\\{0}.json", user.Email), FileMode.Open, FileAccess.Read))
                {
                    try
                    {
                        credential = GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets, new[] { CalendarService.Scope.Calendar }, "user", CancellationToken.None, new FileDataStore("UpdayeSync.Credentials")).Result;
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        return null;
                    }
                }
     
                BaseClientService.Initializer initializer = new BaseClientService.Initializer();
                initializer.HttpClientInitializer = credential;
                initializer.ApplicationName = "UpdateSync";
                service = new CalendarService(initializer);
     
                EventsResource.ListRequest req = service.Events.List("primary");
                req.TimeMin = DateTime.Now.AddMonths(-2);
                req.ShowDeleted = true;
                req.UpdatedMin = LastSync;
                req.SingleEvents = true;
     
                Events events;
                try
                {
                    events = req.Execute();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    return null;
                }
    Au tout premier lancement, Google Chrome s'est ouvert, connecté sur mon compte "email2@gmail.com", me demandant confirmation pour que le programme se connecte à mon calendrier.
    J'ai acquiessé.
    Aucune autre popup.

    Et malgré les 3 itérations, le programme ne lit / modifie que le calendrier du compte "email2@gmail.com"

    La bonne nouvelle, c'est que quand je relance le programme, il ne me pose plus la question. Donc c'est déjà pas mal.

    Au détail près que j'aimerais pouvoir me connecter successivement à mes 3 comptes !

    Qu'est-ce qui cloche ?

    Je ne trouve aucune documentation pour faire ce genre de traitement dans la doc de Google.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Je vous invite à consulter le lien suivant http://www.scripts-sharers.com/Tutos...lendarApi.aspx
    vous y trouverez certainement une aide.


    bon courage

Discussions similaires

  1. Installation certificat sans action utilisateur
    Par Tefonline dans le forum Windows
    Réponses: 4
    Dernier message: 18/12/2009, 13h24
  2. Comment lancer mon application sans delphi?
    Par zenatim dans le forum Débuter
    Réponses: 11
    Dernier message: 26/08/2009, 11h21
  3. Réponses: 3
    Dernier message: 25/05/2009, 12h37
  4. [win 2003] Comment démarrer une application sans se logger?
    Par spiwis dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 11/07/2007, 15h00
  5. Réponses: 3
    Dernier message: 29/05/2007, 09h16

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