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

IGN API Géoportail Discussion :

Services WMTS dans une application javascript/Phonegap : modification du user-agent.


Sujet :

IGN API Géoportail

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Services WMTS dans une application javascript/Phonegap : modification du user-agent.
    Bonjour,

    Je développe actuellement une application web en javascript destinée à devenir une application mobile native grâce à phonegap.

    Cette application exploite les services WMTS de l'api de l'IGN.

    D'après les tutoriaux que j'ai pu lire sur votre site :

    (http://api.ign.fr/documentation/243/...api-javascript)

    il est nécessaire de modifier les fichier sources (java par exemple pour Android) des applications natives pour modifier le user agent et le faire correspondre à celui de notre clé.

    Le problème est, qu'en utilisant le cloud et le phonegap builder pour "builder" les applications natives, je n'ai pas accès au code source de ces applications. Je travaille en HTML et javascript, je ne peux donc pas modifier les fichier .et le builder en ligne génère le code natif.

    Voici un exemple de user-agent pour Android :

    Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.72 Safari/537.36

    Pourquoi l'API ne reconnait-elle pas le user-agent "Android" de l'exemple ci-dessus, avec la clé de développement pour Mobile Android?

    Est-il forcément nécessaire de transformer le user-agent du mobile pour qu'il corresponde à celui de l'API ?

    Si oui est-il possible de le faire au niveau de javascript?

    Merci d'avance pour votre retour

  2. #2
    Membre habitué
    Inscrit en
    Mai 2009
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 198
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par Matthieu.Barbet Voir le message
    Pourquoi l'API ne reconnait-elle pas le user-agent "Android" de l'exemple ci-dessus, avec la clé de développement pour Mobile Android?

    Est-il forcément nécessaire de transformer le user-agent du mobile pour qu'il corresponde à celui de l'API ?
    Parce qu'un UA totalement standard comme celui-ci rendrait votre clé utilisable par tout le monde.
    Donc oui, il faut modifier le UA pour une application qui n'est pas liée à un domaine et donc utiliser un Referer.

  3. #3
    Membre chevronné Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Points : 1 843
    Points
    1 843
    Par défaut
    Bonjour,

    j'adhère complètement à la réponse de Max_B : c'est la spécificité de votre UA qui va protéger votre clef d'une utilisation par des applications tierces.

    Je répond à la deuxième partie de votre question :

    Citation Envoyé par Matthieu.Barbet Voir le message
    Si oui est-il possible de le faire au niveau de javascript?
    En théorie oui. Pour les requêtes envoyées en AJAX, on peut rajouter des entêtes HTTP à à volonté via la méthode : xmlhttp.setRequestHeader.

    Seulement, les images affichées par l'API pour constituer la carte ne sont pas récupérées par ce protocole là, mais par l'écriture de balises <img> avec l'url de la tuile à télécharger. Du coup, c'est le client qui va remplir les entêtes de la requête qu'il va lui-même fabriquer. ça me parait donc compliqué à réaliser côté JS.

    Pour moi, il faut voir jusqu'où peut on aller dans la configuration de son application avec PhoneGap build ? apparemment, on peut passer quelques paramètres : est-ce que le UA en fait partie ou non ? cf. http://docs.build.phonegap.com/en_US...basics.md.html pour cela.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur Cartographe
    Inscrit en
    Juin 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Cartographe
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2009
    Messages : 84
    Points : 161
    Points
    161
    Par défaut Phonegap / Cordova
    Bonjour,

    Il y a un tuto pour phonegap disponible sur le site de l'API : http://api.ign.fr/tutoriels-phonegap
    Le tuto est un peu vieux (ancienne version de phonegap) mais on y trouve les renseignements utiles pour la modification du user-agent (obligatoire pour protéger votre clé API).

    Par exemple si votre user-agent est MON_USERAGENT,
    - pour Android, dans le fichier Activity.java de votre application ajoutez la ligne de code suivante à l'intérieur de la méthode onCreate de la classe Activity:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Set user agent
    this.appView.getSettings().setUserAgentString("MON_USERAGENT");
    - pour iOS, dans la Classe AppDelegate.m, au début de la fonction (id)init, ajoutez les lignes de code suivantes pour définir le user-agent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Set user agent
    //(the only problem is that we can't modify the User-Agent later in the program)
    NSDictionary*dictionnary = [[NSDictionary alloc]
    	initWithObjectsAndKeys:@"MON_USERAGENT", @"UserAgent", nil];
    [[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];
    [dictionnary release];
    @+

Discussions similaires

  1. Web Service c++ dans une application
    Par Celes_Vongola dans le forum C++
    Réponses: 4
    Dernier message: 11/07/2014, 09h16
  2. Réponses: 0
    Dernier message: 30/06/2009, 18h14
  3. Intégrer un web service dans une application java
    Par madjidri dans le forum Services Web
    Réponses: 2
    Dernier message: 08/06/2008, 14h53
  4. Réponses: 7
    Dernier message: 17/10/2007, 17h06
  5. Modification de onSubmit dans une fonction javascript
    Par kalan dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/11/2006, 14h13

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