Archives de catégorie : APIs

Connectons-nous au serveur Cloud de Mercedes (2/2) – Utiliser les API avec CuRL

Pour appeler le serveur Mercedes il faut envoyer des commandes REST en https .

J’ai trouvé une explication de l’utilisation de ces commandes sur le site de SCIP : CAR HACKING ANALYSIS OF THE MERCEDES CONNECTED VEHICLE API: www.scip.ch/en/?labs.20180405 .

Nota : Https est un Protocole de transmission permettant à l’utilisateur d’accéder à des pages web par l’intermédiaire d’un navigateur. Rest est une logique d’appel d’API de serveurs.

1.         CURL

CURL est une interface en ligne de commande, destinée à récupérer le contenu d’une ressource accessible par un réseau informatique. La ressource est désignée à l’aide d’une URL et doit être d’un type supporté par le logiciel.

Normalement on ne peut pas utiliser CURL sur Windows mais des personnes ont reprogrammé CURL pour qu’on puisse utiliser CURL sur Windows(https://o7planning.org/fr/11617/installation-de-curl-sous-windows). Donc j’ai téléchargé la version Windows de CURL sur mon PC et j’ai fait un test avec mon Blog et ceci a marché (j’ai bien obtenu le contenu de la page de mon blog dans le fichier mapage.html).

curl » http://wollef.org/fr/mieux-que-pokemon-go-pixelmon-mod/ –output mapage.html

2.         Connexion sécurisée et Redirect URL

a)              Le principe

Avant d’accéder aux données avec l’API il faut montrer qu’on est le propriétaire du compte Mercedes. Ce n’est malheureusement pas aussi simple que de taper un nom d’utilisateur et un mot de passe.

En effet le propriétaire du compte (la personne) doit approuver l’utilisation des données du compte par l’application que l’on a déclarée juste avant.

Le mécanisme est décrit dans l’article de SCIP dont je parle juste avant, et aussi dans la documentation Mercedes  ( https://developer.mercedes-benz.com/content-page/oauth-documentation ).

Pour simplifier cela donne les étapes suivantes :

  • Etape A : L’application qui veut utiliser les données doit envoyer l’utilisateur vers une page Mercedes pour y taper son utilisateur et mot de passe
  • Etape B : L’utilisateur va pouvoir saisir ces informations et dire qu’il approuve l’utilisation des données par l’application
  • Etape C : Le serveur Mercedes renvoie alors l’utilisateur vers l’application en donnant une clé d’accès à celle—ci.

Cette dernière action (le retour vers l’application) se fait avec la ‘redirect url’.

b)              Configuration de la redirect URL

On doit indiquer dans la page de configuration la redirect URL. Pour les premiers tests en CURL, ce sera une url ‘localhost’ (car on n’a pas encore notre serveur avec le jeu en place).

Note : Sur l’impression d’écran, il y a un autre redirect URL, c’est celle de l’application finie (celle intégrée avec salesforce). Nous n’en avons pas besoin pour le moment.

3.         Mise en place de la connexion

La première étape est de connaître les informations qui permettent à l’application d’accéder au serveur Mercedes avec les API.

Ce sont les client id et client secret qui ont été créés quand on a déclaré l’application (ils sont sur dans le texte de ce blog tronqués pour des raison de sécurité, les id réels obtenus et à saisir sont plus longs).

Ensuite, on simule l‘étape A à la main, en tapant l’URL d’authentification dans le navigateur avec le seul client-id:

https://api.secure.mercedes-benz.com/oidc10/auth/oauth/v2/authorize?response_type=code&client_id=36f504aa-f141-41ad-……&redirect_uri=https%3A%2F%2Flocalhost&scope=mb:user:pool:reader%20mb:vehicle:status:general

On arrive sur une page pour se connecter, c’est l’étape B faite par l’utilisateur.

Le serveur Mercedes demande d’approuver la connexion aux données

Ensuite le serveur Mercedes redirige vers une page web (return URL), en donnant un code d‘autorisation unique : 6e9d89c4-a374-4bb9-8c88-673034f87342. C’est l’étape C.

4.         Obtenir le jeton de session

Maintenant on va demander avec l’API (donc en utilisant CURL) d’obtenir le jeton de session qui sera utilisé pour tous les appels suivant à l’API.

Il y a une astuce : c’est que l’appel demande les client Id et client secret dans une forme spéciale qui est l’encodage base 64.

Pour l’obtenir j’ai utilisé une application disponible sur le web : Base 64 Encode https://www.base64encode.net/

Pour encoder, on passe à cette application une chaine de caractère composée du client id et du secret id sépararés par un : (double point).

On obtient la forme encodée des informations suivantes (nota : la partie du milieu est tronquée pour des raisons de sécurité) :

MzZmNTA0YWEtZjE0MS00MWFkLTkz …… QxNjUtNDUwOS04MTdhLTE2YTRkZjViMTM3ZA==

On peut maintenant faire l’appel vers l’API pour initialiser la session en y intégrant le token (incluant donc c lient id et secret id) et le code d’autorisation unique de l’étape B :

curl -X POST « https://api.secure.mercedes-benz.com/oidc10/auth/oauth/v2/token » -H « authorization: Basic MzZmNTA0YWEtZjE0MS00MWFkLTkz……QxNjUtNDUwOS04MTdhLTE2YTRkZjViMTM3ZA== » -H « content-type: application/x-www-form-urlencoded » -d « grant_type=authorization_code&code=6dee706b-9ce9-4f3a-85e8-bd696aae8bef&redirect_uri=https%3A%2F%2Flocalhost »

Hourra ! Le serveur Mercedes nous a renvoyé les jetons de connexion (access token)

5.         Utilisation de la session : appel d’une API : la liste des voitures

Une fois qu’on a un jeton de session on peut s’en servir pour appeler les APIs avec Curl.

On va appeler ici trois API tel que documentées ici : https://developer.mercedes-benz.com/apis/connected_vehicle_experimental_api/ .

a)              Obtenir la liste des voitures

curl -X GET « https://api.mercedes-benz.com/experimental/connectedvehicle/v1/vehicles »  -H « accept: application/json »  -H « authorization: Bearer f9da01aa-0c07-412b-bb0c-f31a7b413b7b »

On peut lire l’Id de la voiture dans la réponse : E09C4378AD45F1A304

Documentation : https://developer.mercedes-benz.com/apis/connected_vehicle_experimental_api/docs#_get_the_vehicleid_from_the_connected_vehicle_api

b)              Obtenir les informations sur la voiture

curl -X GET « https://api.mercedes-benz.com/experimental/connectedvehicle/v1/vehicles/E09C4378AD45F1A304 » -H « accept: application/json » -H « authorization: Bearer f9da01aa-0c07-412b-bb0c-f31a7b413b7b »

Documentation : https://developer.mercedes-benz.com/apis/connected_vehicle_experimental_api/docs#_2_get_additional_information_about_your_car

c)              Verrouiller les portes

curl -X POST « https://api.mercedes-benz.com/experimental/connectedvehicle/v1/vehicles/E09C4378AD45F1A304/doors » -H « Content-Type: application/json » -H « authorization: Bearer f9da01aa-0c07-412b-bb0c-f31a7b413b7b »  -d « { \ »command\ »: \ »LOCK\ »} »

Documentation: https://developer.mercedes-benz.com/apis/connected_vehicle_experimental_api/docs#_4_set_the_lock_state_of_your_car_doors

 

 

Nous voici donc en mesure maintenant d’appeler les API du serveur Cloud de Mercedes pour notre application de jeu ! C’est ce que nous ferons dans les articles prochains !

Connectons-nous au serveur Cloud de Mercedes (1/2) – Le service Cloud

Pour ce projet, nous allons devoir nous connecter au serveur Cloud de Mercedes qui sait gérer les informations concernant la voiture.

A.       Mercedes Benz « Mercedes Me »

Les voitures d’aujourd’hui ne sont pas juste « des moteurs et une carrosserie » mais elles comportent un ordinateur qui analyse et contrôle le comportement de la voiture.

Avec cet ordinateur il est maintenant possible de transférer des données de ses voitures vers le serveur Mercedes. Pour cela il faut enregistrer sa voiture sur le compte « Mercedes Me ».

Il y a une application smartphone :

  • qui permet de visualiser les données de ses voitures sur son téléphone.
  • qui récupère les données de la voiture et les envoie par le réseau GSM au serveur Mercedes.

B.        Présentation de l’API Mercedes

En janvier 2018 Mercedes a sorti une API vers les serveurs Mercedes (mais ce n’est pas encore la version finale).

Avec cette API on peut :

  • lire des données sur la voiture à distance (position, quantité de carburant, l’état des portes,…)
  • commander la voiture à distance (ouvrir et fermer les portes, mais pas la faire rouler toute seule…).

C’est une Api vers les serveurs Mercedes, ce qui veut dire qu’on n’interroge pas directement la voiture. Seuls les serveurs Mercedes communiquent avec la voiture.

Les informations sur cette API sont disponibles sur le site web « Mercedes Developer : https://developer.mercedes-benz.com/apis

1.         Création du compte Mercedes

Pour pouvoir utiliser l’API il faut créer un compte sur Mercedes.

Pour cela il faut aller sur ce site : https://login.secure.mercedes-benz.com/profile/register?app-id=ONEAPI.PROD

 

2.         Création de l’application connectée

Pour pouvoir accéder aux données d’une voiture, on doit déclarer chez Mercedes l’« application » qui va accéder au serveur Mercedes. Pour déclarer cette application, il faut aller dans le menu Console

puis cliquer sur ADD NEW APP

a)              Ajout de l’API

On doit ensuite indiquer les API de Mercedes que l’application va utiliser.

Pour ajouter une API il faut aller dans le menu API. Ensuite on cherche l’API qu’on veut puis on l’ajoute en cliquant sur « Try It Now ».

Nous avons besoin de l’API « Connected API Experimental »

Ensuite on clique sur Subscribe pour pouvoir l’utiliser.

3.         Activation du Car Simulator

Avant de pouvoir utiliser les API pour une vraie voiture, Mercedes propose d’utiliser un simulateur pour faire des tests.

Pour commencer à utiliser le simulateur il faut ouvrir https://car-simulator.developer.mercedes-benz.com et se connecter avec ses informations de compte Mercedes-Benz /developers. Maintenant le simulateur est ouvert.

Dans l’article suivant, nous allons expliquer comment manipuler l’API du service Cloud mercedes en utilisant curl.