OAuth2
Le mode OAuth2 suppose que votre contact administratif (c'est-à-dire le responsable légal ou technique de la Marketplace que vous devez intégrer), vous ait ouvert un compte technique depuis son propre accès au Back Office Marchand.
Ceci fait :
- Connectez-vous au Back Office Marchand avec vos propres identifiants d'accès;
- En haut et à droite de l'écran, faites apparaître le menu déroulant sous votre nom, et cliquez sur Paramètres;
- Cliquez sur l'onglet Clé API, pour récupérer vos clés
pour les environnements de test et de production.
- Pour générer un jeton d'authentification, effectuez une requête POST à l'adresse suivante :
https://account.lyra.com/auth/realms/marketplace/protocol/openid-connect/token
Il s’agit de la même adresse pour les deux environnements.
- Utilisez les paramètres suivants au format application/x-www-form-urlencoded :
- grant_type: client_credentials
- client_id: <CLIENT_ID>
- client_secret: <CLIENT_SECRET>
- Vous pouvez maintenant créer une requête qui récupérera les informations de
votre marketplace de test. Pour cela :
- Copiez le jeton d'authentification (access_token) dans le header Authorization: Bearer {access_token}
- Envoyez votre requête à l'adresse de l'environnement
https://secure.lyra.om/marketplace-test/v1/marketplaces/{marketplace_uuid}
Exemple :
https://secure.lyra.com/marketplace-test/v1/marketplaces/57595c55-b096-41d8-9287-b98640de3f25
Le jeton d'authentification a une durée de vie de 5 minutes, et notez que le refresh token n'est pas utilisé dans le cadre de la marketplace.Vous devez mettre en place une méthode allant récupérer un nouveau jeton au maximum toutes les 300 secondes (cf. exemple en PHP ci-dessous)
Une requête soumise avec un jeton d'authentification expiré sera rejetée avec un code HTTP 307.
Exemple d'obtention du jeton d'authentification en PHP
<?php require 'vendor/autoload.php'; use GuzzleHttp\Client; $MARKETPLACE_UUID = "57595c55-b096-41d8-9287-b98640de3f25"; $USERNAME = 'ksparkles'; $CLIENT_ID = $USERNAME."_".$MARKETPLACE_UUID; $CLIENT_SECRET = "e0d999f6-01d8-4ef9-8f9b-0fc5fa08f1a5"; $AUTH_URL = "https://account.lyra.com/auth/realms/marketplace/protocol/openid-connect/"; $API_URL = "https://secure.lyra.com/marketplace-test/v1/"; session_start(); function getAccessToken() { global $AUTH_URL, $CLIENT_ID, $CLIENT_SECRET; $expire_next = $_SESSION['expires_next']; if (!$_SESSION['token'] || !$expire_next || time() >= $expire_next - 2) { $client = new Client(["base_uri" => $AUTH_URL]); $response = $client->request('POST', 'token', ['form_params' => [ 'grant_type' => 'client_credentials', 'client_id' => $CLIENT_ID, 'client_secret' => $CLIENT_SECRET ]] ); $body = $response->getBody(); $data = json_decode($body->getContents()); $_SESSION['token'] = $data->access_token; $_SESSION['expires_next']= time() + $data->expires_in; } return $_SESSION['token']; } function getMarketplaceDetails() { global $API_URL, $MARKETPLACE_UUID; $token = getAccessToken(); $client = new Client(["base_uri" => $API_URL]); $response = $client->request('GET', "marketplaces/$MARKETPLACE_UUID", ['headers' => ['Authorization' => "Bearer $token"]] ); $body = $response->getBody(); return $body->getContents(); } echo getMarketplaceDetails();