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

Android Discussion :

Synchronisation avec google agenda


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut Synchronisation avec google agenda
    Bonjour tout le monde,
    je suis entrain de développer une application vCalendar sur android et l'une des fonctionnalités demandées c'est le service de synchronisation avec google agenda, alors je me demandais s'il y a un web service qui effectue déjà cette tâche sinon comment y procéder?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    merci pour le lien même si je ne trouve pas vraiment ce que je cherche. Pour la suite de votre message désolé je n'ai pas compris ce que vous voulez dire.

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Points : 4 240
    Points
    4 240
    Par défaut
    Sur Android, il y a déjà un agenda qui est synchronisé avec la version web du même compte mail.
    Du coup, depuis une appli externe, tu peux réussir à intérrogé cet agenda, et de manière plus ou moins contourné, tu peux modifier des informations.

    http://android.developpez.com/faq/?p...ntent_calendar
    Si vous jugez mon post utile dans la résolution de votre problème, n'hésitez pas à utiliser le système de vote afin d'améliorer la qualité du forum

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    En fait l'application vCalendar dont je vous ai parlez est une application qui est développée sur la plateforme mobile android mais qui est destinée à l'utilisation dans un target installé au sein d'une voiture du coup elle doit être implémentée "from the scratch" c'est à dire que je ne peux pas utiliser les applications déjà présentes dans la plateforme d'où la nécessité de développer un nouveau service qui aboutit à la synchronisation entre le calendrier déjà implémenté et les autres calendriers de l'utilisateur présents dans google agenda. Ce que je veux savoir c'est la façon avec laquelle je peux accéder aux évènements de google agenda et les importer dans mon calendrier.

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Le lien que je donne plus haut définit le protocole d'utilisation de google Calendar via des URL spécifiques.

    Toutes les actions décrites dans le document permettent d'authentifier l'utilisateur, de récupérer ses calendriers, de les manager (création/modification/suppression), de gérer les abonnements à d'autres calendriers, de gérer les events des calendriers (récupération, création, update, suppression), de partager les calendriers en ainsi de suite.

    Tout ça avec des réponses sous forme de XML ou de JSON qui sont parfaitement exploitables sous Android...

    http://code.google.com/intl/fr/apis/..._protocol.html

    (le reste de mon message précédent correspond à ma signature en fait).
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Merci pour l'intérêt que vous avez montrez concernant mon sujet j'espère trouver rapidement ce que je cherche.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Salut,
    En fait j'ai commencé à lire le document que vous m'avez recommandez mais ce que je ne comprends pas c'est comment intégrer les requêtes dans mon application et dans quelle partie plus précisément, en plus je ne vois pas comment je vais récupérer les résultats des requêtes surtout que je ne connais aucun des deux formats proposés.

  9. #9
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    La requête doit être émises via les classe présentes dans les package org.apache.http.* fournis par android.

    Dans les exemple de code fournis sur Android, il en existe un qui montre comment faire en se basant sur un service wikipedia retournant des données sous forme de JSON.

    La classe montre comment faire une requête HTTP avec les classes du SDK android, puis comment exploiter le format JSON retourné

    http://developer.android.com/resourc...ikiHelper.html
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    salut,
    Depuis hier je me suis concentré sur l'exemple que vous m'avez montrez, maintenant j'ai commencé à tester les requêtes citées dans le Protocol et dés le début je me suis trouvé bloqué car je n'arrive pas à faire l'authentification au services de google. La requête me redirige toujours vers une page incorrecte sachant que je teste les requêtes dans la barre d'adresse du navigateur.

  11. #11
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    L'AuthSub n'est pas la méthode d'authentification dont tu as besoin. En effet elle est réservée aux sites/applications web comme indiqué dans la documentation.

    If your client is a standalone single-user "installed" client (such as a desktop application), then you should use the ClientLogin system; if your client is a multi-user web application client, then you should use the AuthSub system. Both of these methods involve interacting with an authentication service. The authentication service returns an authentication token that your client can then send to the Calendar Data API service along with every subsequent request on behalf of that user.
    Je te laisse deviner quelle type d'identification tu dois utiliser...
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  12. #12
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    en fait j 'utilise la méthode client login mais je pense que j'ai une erreur dans le champs ClientLogin puisque je ne sais pas si je doit mettre le seulement le login ou bien le login et le mot de passe dans la requête http. Et si je dois mettre les deux comment puis-je les combiner?

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Salut,
    Comme je l'ai mentionné ultérieurement je suis entrain de tester les requêtes d'une façon directe à partir de la barra d'adresse du navigateur(google chrome) avant de les implémenter dans un deuxième temps. En j'ai parvenu à résoudre le problème de l’authentification en ajoutant les paramètres Email et Passwd à la requête mais maintenant à chaque fois que j'essaye de demander de modifier le type du résultat en jsonc le navigateur me renvoie la réponse suivante:"Authorization required

    Error 401".
    est-ce que vous avez une idée sur ce problème?

  14. #14
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    As tu obtenu un token?

    Il te faut vraiment lire et suivre pas à pas la doc.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    j'ai suivi la documentation mais les problèmes persistent encore. En fait c'est en essayant de se connecter au service de google utilisant la méthode ClientLogin username/password authentication que je me suis trouvé bloqué car en envoyant une requête HTTP à l'url mentionnée le serveur me renvoie la valeur 200 mais je ne reçois pas ni le token ni le format jsonc des résultas de la requête.Celle ci est la fonction qui exécute la requête:
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     public static void connect(String url) throws UnsupportedEncodingException
        {
     
            HttpClient httpclient = new DefaultHttpClient();
     
            // Prepare a request object
            HttpPost httppost = new HttpPost(url); 
     
                // Add your data  
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);  
                nameValuePairs.add(new BasicNameValuePair("Email", "hamza.elouni@gmail"));  
                nameValuePairs.add(new BasicNameValuePair("Passwd", "hamzains"));  
                nameValuePairs.add(new BasicNameValuePair("alt", "json")); 
     
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));  
     
     
            Log.v(TAG,httppost.toString());
            // Execute the request
            HttpResponse response;
            try {
                response = httpclient.execute(httppost);
                // Examine the response status
                Log.i("Praeda",response.getStatusLine().toString());
     
                // Get hold of the response entity
                HttpEntity entity = response.getEntity();
                // If the response does not enclose an entity, there is no need
                // to worry about connection release
     
                if (entity != null) {
     
                    // A Simple JSON Response Read
                    InputStream instream = entity.getContent();
                    String result= convertStreamToString(instream);
                    Log.i("Praeda",result);
     
                    // A Simple JSONObject Creation
                    JSONObject json=new JSONObject(result);
                    Log.i("Praeda","<jsonobject>\n"+json.toString()+"\n</jsonobject>");
     
                    // A Simple JSONObject Parsing
                    JSONArray nameArray=json.names();
                    JSONArray valArray=json.toJSONArray(nameArray);
                    for(int i=0;i<valArray.length();i++)
                    {
                        Log.i("Praeda","<jsonname"+i+">\n"+nameArray.getString(i)+"\n</jsonname"+i+">\n"
                                +"<jsonvalue"+i+">\n"+valArray.getString(i)+"\n</jsonvalue"+i+">");
                    }
     
                    // A Simple JSONObject Value Pushing
                    json.put("sample key", "sample value");
                    Log.i("Praeda","<jsonobject>\n"+json.toString()+"\n</jsonobject>");
                    Log.v(TAG,"<jsonobject>\n"+json.toString()+"\n</jsonobject>");
     
                    // Closing the input stream will trigger connection release
                    instream.close();
                }
     
     
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
     
    }
    La classe mère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            RestClient connection=new RestClient();
            try {
    			connection.connect("https://www.google.com/accounts");
    		} catch (UnsupportedEncodingException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
        }
    Si vous avez remarqué l'url ne contient pas le champs ClientLogin car si je l'ajoute je reçois "403 forbidden".

  16. #16
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Salut,
    j'ai parvenu à résoudre mon problème tout seul en fait il manquait le domaine du login et j'ai ajouté un user agent à l'entête de la requête et ça marche super bien, je reçois le token mais il reste un petit problème car je n'arrive pas jusqu'à maintenant à recevoir le résultat en json pourtant j'ai ajouté le paramètre alt=json à la requête.

  17. #17
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est juste probablement car le token n'est pas prévu pour être renvoyé sous format JSON

    If it succeeds, then the response from the service is an HTTP 200 OK status code, plus three long alphanumeric codes in the body of the response: SID, LSID, and Auth. The Auth value is the authorization token that you'll send to Calendar with your request, so keep a copy of that value. You can ignore the SID and LSID values.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  18. #18
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Bonjour,
    J'ai réussi à récupérer le token mais lorsque je l'utilise pour définir l'entête de l'autorisation de la requête le serveur me renvoie 401 missing auth token.
    Je pense que c'est à cause de la manière avec la quelle j'ai défini l'entête :
    httpget.setHeader("Authorization","GoogleLogin auth"+token);
    quelqu'un a une idée sur ce problème.

  19. #19
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Authorization: GoogleLogin auth=yourAuthToken


    Il manque un caractère dans ta chaine entre auth et ton token....

    Penses vraiment à bien lire la spec et à vérifier à quoi ressemble tes chaines (par exemple via la Log.i ou tout équivalent
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  20. #20
    Membre à l'essai
    Homme Profil pro
    Développeur Mobiles
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Mobiles
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Salut,
    en fait vous avez raison car il manque vraiment un caractère entre auth et le token mais c'est dû au nombre de fois que j'ai modifié le code, en ce qui concerne la lecture de la spec je vous garantie que je l'ai bien lu et je l'ai suivi étape par étape mais toujours le même problème "400 Bad request".

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Synchronisation application -> Google Agenda
    Par Jøker dans le forum 4D
    Réponses: 0
    Dernier message: 05/02/2015, 12h22
  2. Réponses: 7
    Dernier message: 29/12/2014, 13h54
  3. [WD17] Synchronisation avec agenda google
    Par glock19 dans le forum WinDev
    Réponses: 7
    Dernier message: 16/03/2014, 19h18
  4. [Lightning] Synchroniser Google Agenda
    Par Sekmeth dans le forum Thunderbird
    Réponses: 0
    Dernier message: 25/09/2009, 15h47
  5. Agenda synchronisable avec un Pocket PC
    Par Julien Bodin dans le forum Général Java
    Réponses: 0
    Dernier message: 06/07/2009, 10h30

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