Si vous avez déjà un access token, je vous montre dans un autre guide comment configurer des webhooks , ici


Pour pouvoir accéder à l’api, on aura besoin d’un bearer access token. Mais il n’est pas accessible facilement. en effet, Calendly ont mit le système de Oauth.

Je vais vous montrer dans ce tutoriel comment y accéder.

je me base sur https://developer.calendly.com/create-a-developer-account et de leurs docs pour faire ce tuto.

prérequis: avoir un compte calendly (même avec le plan free)

Etape 1: créer une nouvelle application

Tout d’abord, Accéder à https://developer.calendly.com/console/apps

Ensuite, cliquer sur + create new app

Puis, remplir les champs

Copiez quelque part le client id, client secret et webhook signing key

Etape 2: récupérer le “code”

Premièrement, Dans un browser , mettre l’url suivant en adaptant {{client_id}} et {{redirect_uri}}

https://auth.calendly.com/oauth/authorize?response_type=code&redirect_uri={{redirect_uri}}&client_id={{client_id}}

Et ensuite, vous allez être redirigé avec le code, notez le.

Etape 3: Récuperer le bearer access token (enfin)

Il faudra commencer par faire un POST.

POST https://api.calendly.com/oauth/token

Ici, J’utilise postman (que je conseil), mais vous utilisez ce que vous voulez

Ensuite, Dans l’onglet Params, faudra mettre ces champs

Puis, dans l’onglet Authorization, choisir basic auth , et remplir les champs username qui correspond {{client_id}} et password qui correspond le {{client_secret}}

Juste à titre indicatif: le cUrl doit ressembler à ça

curl --location --globoff --request POST 'https://auth.calendly.com/oauth/token?grant_type=authorization_code&code={{code%20qu%27on%20a%20r%C3%A9cup%C3%A9rer%20%C3%A0%20l%27%C3%A9tape%202}}&redirect_uri=http%3A%2F%2Flocalhost%3A1234' 
--header 'Content-Type: application/x-www-form-urlencoded' 
--header 'Authorization: Basic {{base64 de username:password}}'

Et enfin, en Response vous aurez votre bearer access token, et aussi d’autres info utiles comme le {{uuid}} , {{organization_id}}, et aussi le {{refresh_token}} → très important, gardez le au chaud

{
    "access_token": "{{le bearer access token}}",
    "token_type": "Bearer",
    "expires_in": 7200,
    "refresh_token": "{{refresh_token}}",
    "scope": "default",
    "created_at": 1729092447,
    "owner": "https://api.calendly.com/users/{{uuid}}",
    "organization": "https://api.calendly.com/organizations/{{organization_id}}"
}

Etape 4: Tester si ça fonctionne bien

Avec le bearer access token, on va voir si ça fonctionne bien en faisant un GET avec postman GET https://api.calendly.com/users/me

Pour finir, si vous avez ça comme Response , bravo vous avez votre bearer access token prêt à l’emploi

{
    "resource": {
        "avatar_url": null,
        "created_at": "2024-08-29T12:59:40.533281Z",
        "current_organization": "https://api.calendly.com/organizations/{{organization_id}}",
        "email": "[email protected]",
        "name": "Pascal Yu",
        "resource_type": "User",
        "scheduling_url": "https://calendly.com/pascal-yu-freelance",
        "slug": "pascal-yu-freelance",
        "timezone": "Europe/Berlin",
        "updated_at": "2024-09-13T00:11:29.757612Z",
        "uri": "https://api.calendly.com/users/{{uuid}}"
    }
}

Etape 5: Bearer access token expiré?

En effet, le bearer access token peut s’expirer au bout d’un temps.

On va commencer par le récupérer à l’aide du {{refresh_token}} qu’on a récupéré à l’étape 3.

Puis, On va faire un POST sur la même requête que l’étape 3, mais on va changer quelques paramètres

POST https://auth.calendly.com/oauth/token?grant_type=refresh_token&refresh_token={{refresh_token}}

Et finalement, en Response avec le fameux token.

{
    "access_token": {{bearer_access_token}},
    "token_type": "Bearer",
    "expires_in": 7200,
    "refresh_token": {{refresh_token}},
    "scope": "default",
    "created_at": 1729169274,
    "owner": "https://api.calendly.com/users/{{uuid}}",
    "organization": "https://api.calendly.com/organizations/{{organization_id}}"
}

Ansi termine ce tuto, j’ai écris un guide pour créer des hooks ici, sinon vous pouvez utiliser ce token dans l’interface que j’ai fais : http://83.202.18.38

Je suis Pascal Yu, je vous aide à développer vos solutions à l’aide de Symfony.

Prend un rendez vous gratuitement avec moi pour savoir comment je peux vous aider.