Les tokens d’accès utilisateur et de Page par défaut ont une durée de vie courte (de l’ordre de quelques heures) ; aussi, vous pouvez échanger un token de courte durée contre un token de longue durée.
Lorsque vous utilisez le SDK iOS, Android ou JavaScript, celui-ci actualise automatiquement les tokens si la personne a utilisé votre app au cours des 90 derniers jours. Les apps mobiles natives qui utilisent les SDK Facebook obtiennent des tokens d’accès utilisateur de longue durée, valides pendant environ 60 jours. Ces tokens sont actualisés une fois par jour, lorsque la personne qui utilise votre app envoie une demande aux serveurs de Facebook. En l’absence de demande, le token expire après environ 60 jours, et la personne doit repasser par le processus de connexion pour obtenir un nouveau token.
Dernière version de l’API Graph : v21.0
Si vous avez besoin d’un token d’accès utilisateur de longue durée, vous pouvez en générer un à partir d’un token d’accès utilisateur de courte durée. Généralement, un token de longue durée est valide pendant environ 60 jours.
Vous aurez besoin des éléments suivants :
Interrogez le point de terminaison GET oauth/access_token
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={your-access-token}"
{ "access_token":"{long-lived-user-access-token}", "token_type": "bearer", "expires_in": 5183944 //The number of seconds until the token expires }
Le workflow de génération d’un token d’accès utilisateur de longue durée se présente ainsi :
Lorsque vous avez récupéré le token de longue durée, vous pouvez l’utiliser depuis votre serveur ou le renvoyer au client pour pouvoir l’utiliser à cet emplacement.
Vous ne pouvez pas utiliser un token expiré pour demander un token de longue durée. Si le token est arrivé à expiration, votre app doit à nouveau orienter l’utilisateur vers le processus de connexion pour générer un nouveau token d’accès de courte durée.
Passez cet appel depuis votre serveur, pas depuis un client. Puisque votre clé secrète est comprise dans l’appel de l’API, vous ne devriez jamais faire la demande côté client. Implémentez plutôt un code côté serveur qui fait la demande, puis renvoyez la réponse contenant le token de longue durée vers votre code côté client. Puisqu’il s’agira d’une chaîne différente du token original, vous devez remplacer l’ancien token si vous les stockez.
N’utilisez pas les mêmes tokens de longue durée sur plusieurs clients web (c.-à-d. dans le cas où vous vous connectez depuis plusieurs ordinateurs). Vous devez plutôt utiliser les tokens de longue durée sur votre serveur pour générer un code, puis l’utiliser pour obtenir un token de longue durée sur le client. Pour en savoir plus, consultez la section Génération de tokens de longue durée à partir des tokens de longue durée côté serveur.
Si vous avez besoin d’un token d’accès de Page de longue durée, vous pouvez en générer un à partir d’un token d’accès de Page de courte durée. Le token d’accès de Page de longue durée ne comporte pas de date d’expiration et expire ou n’est plus valide dans certaines conditions uniquement.
Vous aurez besoin des éléments suivants :
Interrogez le point de terminaison GET {app-scoped-user-id}?accounts
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/{app-scoped-user-id}/accounts? access_token={long-lived-user-access-token}"
{ "data":[ { "access_token":"{long-lived-page-access-token}", "category":"Brand", "category_list":[ { "id":"1605186416478696", "name":"Brand" } ], "name":"Cute Kitten Page", "id":"{page-id}", "tasks":[ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging":{ "cursors":{ "before":"MTM1MzI2OTg2NDcyODg3OQZDZD", "after":"MTM1MzI2OTg2NDcyODg3OQZDZD" } } }
Facebook propose une option pour obtenir des tokens d’accès de longue durée pour les apps afin d’éviter le déclenchement des systèmes de spam automatiques de Facebook. Apps qui :
À un niveau élevé, vous obtenez un token de longue durée pour le client comme suit :
Interrogez le point de terminaison GET oauth/client_code
. L’URI de redirection doit correspondre à la valeur que vous avez définie dans votre Espace App sous la carte Facebook Login > Paramètres client > Paramètres OAuth.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/client_code? client_id={app-id}& client_secret={app-secret}& redirect_uri={app-redirect-uri}& access_token={long-lived-user-access-token}"
{ "code":"{code-for-your-client}" }
Lorsque vous avez récupéré le code depuis le serveur de Facebook, vous devez l’expédier au client par un canal sécurisé. Après cela, vous devez faire une demande depuis le client vers le point de terminaison /oauth/access_token
:
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? code={code-for-your-client}& client_id={app-id}& redirect_uri={app-redirect-uri}& machine_id= {your-client-machine-id}"
Le machine_id
est un paramètre facultatif qui identifie, suit les clients et est utilisé pour la sécurité et la prévention du spam. Il s’agit d’une valeur par client et non par utilisateur/utilisatrice. Si vous avez précédemment passé des appels pour obtenir un code et que vous avez obtenu un machine_id
, vous devriez l’inclure dans votre demande de code.
{ "access_token":"{long-lived-access-token}", "expires_in":5183944, //The number of seconds until the token expires "machine_id":"{your-client-machine-id}" }
Le workflow de génération d’un token de longue durée se présente ainsi :