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

Authentification en lecture

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

Votre clé d'accès en lecture est disponible dans le segment Clés API de la page de paramétrage de votre compte (https://openagenda.com/settings/apiKey), accessible depuis votre onglet de profil dans l'entête de toute page sur OpenAgenda.

Un exemple:

https://api.openagenda.com/v2/agendas/{agendaUID}/events?key={VOTRECLE}&lang=fr

Authentification en écriture

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.

Votre clé secrète sera mise à disposition sur votre compte OA sur demande à support@openagenda.com

Une fois activée, la clé est disponible dans la section Clés API de la page de paramétrage de votre compte: https://openagenda.com/settings/apiKey

Dès que vous avez la clé, postez la sur: https://api.openagenda.com/v2/requestAccessToken

Precisez votre clé dans une variable 'code' et fixez la valeur 'grant_type' en face d'un champ 'authorization_code', les deux en corps de requête. Vous recevrez alors dans la réponse votre token d'accès et une indication sur sa durée de vie en secondes ( respectivement sous les noms access_token et expires_in )

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();