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 l'onglet 'clé' de la page de paramétrage de votre compte, accessible depuis votre onglet de profil dans l'entête de toute page sur openagenda

Un exemple:

https://api.openagenda.com/v2/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 à une durée de vie limitée.

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

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 une valeur 'grant_type' à 'authorization_code'. 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

$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'];
}

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