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