Authentification

La procédure d'authentification diffère selon si vous souhaitez lire ou éditer des contenus

L'usage de clés associées à un compte OpenAgenda est nécessaire pour la plupart des opérations API. Celles-ci sont accessibles depuis la page de paramètres d'un compte.

Lectures seules

L'authentification en lecture se fait en ajoutant un paramètre key dans le header de toutes vos requêtes.

À noter:

  • Il est également possible, mais moins conseillé de placer la clé en query: `?key=votreclé`
  • Un token d'accès obtenu avec la clé secrète peut également servir pour les opérations de lecture.

Écriture

Une clé secrète est nécessaire pour l'édition de contenus via API: elle est attribuée sur simple demande à support@openagenda.com

La procédure d'authentification à suivre pour éditer du contenu sur OpenAgenda consiste à utiliser votre clé secrète pour récupérer un token d'accès qui vous servira pendant toute votre session. Celui-ci a une durée de vie limitée.

Pour obtenir un token d'accès, postez la clé secrète sur la route suivante:

https://api.openagenda.com/v2/requestAccessToken

Avec en corps de requête:

  • grant_type: authorization_code
  • code: votre clé secrète

La réponse contiendra:

  • access_token: votre token d'accès à utiliser dans vos opérations de lecture ou écriture
  • expires_in: la durée de vie de votre token en secondes

Pour les opérations suivantes, placez le token d'accès dans le header de vos requêtes sous la clé access-token.

Exemples

php - curl

Dans l'exemple suivant, les données d'authentification sont passées en corps de requête.

$ch = curl_init('https://api.openagenda.com/v2/requestAccessToken'); 
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
  'grant_type' => 'authorization_code',
  'code' => '--yoursecretgoeshere--'
));

$received_content = curl_exec($ch);
        
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200) {
  $data = json_decode($received_content, true);
  $accessToken = $data['access_token'];
}

php - Guzzle

$client = new GuzzleHttp\Client();
$res = 'https://api.openagenda.com/v2/requestAccessToken';

$response = $client->post($res, [
  'multipart' => [
    [
      'name' => 'grant_type',
      'contents' => 'authorization_code'
    ],
    [
      'name' => 'code',
      'contents' => 'secret_key'
    ],
  ]
]);

$content = json_decode($response->getBody()->getContents());

$accessToken = $content['access_token'];

node.js

const https = require('https');
const querystring = require('querystring');


const post_data = querystring.stringify({
  'grant-type' : 'authorization_code',
  'code': '--yoursecretgoeshere--',
});

const options = {
  host: 'api.openagenda.com',
  path: '/v2/requestAccessToken',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': post_data.length
  }
};

const request = https.request(options, function (response) {
  let str = '';

  response.on('data', function (chunk) { str += chunk; });
  response.on('end', function () {
    if (response.statusCode == 200) {
      const access_token = JSON.parse(str).access_token;
      console.log(access_token);
    }
  });
});

request.write(post_data);
request.end();