Un token d’accès est une chaîne opaque qui identifie un utilisateur ou une utilisatrice, une application ou une Page, et que l’application peut utiliser pour passer des appels à l’API Graph. Le token contient notamment sa date d’expiration et le nom de l’application qui l’a généré. La plupart des appels d’API sur les applications Meta doivent contenir un token d’accès, en raison des contrôles de confidentialité. Il existe différents types de tokens d’accès correspondant à divers cas d’utilisation, et différentes méthodes pour obtenir ces tokens d’accès.
Type de token d’accès | Description |
---|---|
Un token d’accès d’application sert à accéder aux paramètres des applications et à les modifier. Pour les générer, vous devez disposer d’une clé secrète Meta. Les tokens d’accès seront ensuite utilisés pendant les appels destinés à changer les paramètres qui s’appliquent à l’ensemble de l’application. Les tokens d’accès d’application s’obtiennent au moyen d’un appel de serveur à serveur. | |
Un token client sert à accéder aux API au niveau des applications. Vous pouvez ensuite l’intégrer aux applications natives ou de bureau afin d’identifier votre application. Le token client n’est pas un identifiant secret. En effet, il est intégré aux applications. Votre token client se trouve dans votre Espace App Meta. | |
Un token d’accès de Page permet de lire, d’ajouter et de modifier des données appartenant à une Page Facebook. Pour obtenir un token d’accès de Page, vous devez préalablement obtenir un token d’accès utilisateur·ice, puis l’utiliser pour obtenir un token d’accès de Page via l’API Graph. | |
Utilisez les tokens d’accès utilisateur·ice système si votre application réalise des actions programmatiques automatisées sur les objets publicitaires ou les Pages de votre clientèle professionnelle, sans que cela implique une entrée par un utilisateur ou une utilisatrice de l’application ou requière une nouvelle authentification à une date ultérieure. | |
Utilisez des tokens d’accès utilisateur·ice si votre application exécute des actions en temps réel basées sur les entrées de l’utilisateur·ice. Ce type de token d’accès est nécessaire chaque fois que l’application appelle une API pour lire, ajouter ou modifier des données Facebook d’une personne en son nom. Les tokens d’accès utilisateur·ice s’obtiennent généralement par une boîte de dialogue Login demandant à l’utilisateur·ice d’autoriser votre application à obtenir ces tokens. |
Bien que chaque plateforme génère des tokens d’accès au moyen de différentes API, toutes les plateformes suivent la même stratégie de base pour obtenir des tokens utilisateur·ice :
Les tokens d’accès utilisateur·ice se présentent sous deux formes : les tokens de courte durée et ceux de longue durée. Généralement, les tokens de courte durée sont valides pendant une heure ou deux, tandis que les tokens de longue durée sont valides pendant environ 60 jours. Notez que la durée de vie d’un token peut varier sans préavis ou expirer de manière anticipée. Pour en savoir plus, consultez Gestion des erreurs.
Les tokens d’accès générés par une connexion web sont de courte durée, mais vous pouvez les convertir en tokens de longue durée en passant un appel d’API côté serveur avec votre clé secrète.
Les apps mobiles qui utilisent les SDK Facebook pour iOS et Android obtiennent des tokens de longue durée par défaut.
Les apps disposant d’un accès standard à l’API Marketing de Facebook reçoivent des tokens d’accès de longue durée qui n’ont pas de date d’expiration. Ces tokens peuvent toutefois faire l’objet d’une invalidation pour d’autres raisons, mais ils n’expireront pas pour des raisons de durée uniquement. Cela est aussi valable pour les tokens d’accès des utilisateurs système dans Business Manager.
La portabilité est une caractéristique essentielle de la plupart des tokens d’accès. Néanmoins, Apple n’autorise pas le déplacement de tokens vers des serveurs. Autrement, une fois que vous avez obtenu un token d’accès, vous pouvez l’utiliser pour passer des appels depuis un client mobile, un navigateur web ou votre serveur vers les serveurs de Facebook. Si vous obtenez un token par l’intermédiaire d’un client ou d’une cliente, vous pouvez le transférer vers votre serveur et l’utiliser dans les appels de serveur à serveur. Si vous obtenez un token par un appel de serveur, vous pouvez aussi le transférer vers un client et passer les appels depuis ce client.
Déplacez les tokens entre votre client et votre serveur en toute sécurité au moyen du protocole HTTPS afin de protéger les comptes des utilisateurs. Apprenez-en davantage sur les conséquences du déplacement de tokens entre vos clients et votre serveur.
Les diverses plateformes utilisent différentes méthodes pour démarrer ce processus et incluent une fonctionnalité pour gérer les tokens d’accès au nom du développeur et de la personne qui accorde les autorisations :
Les SDK Facebook pour Android gèrent automatiquement les tokens d’accès utilisateur·ice par l’intermédiaire de la classe com.facebook.AccessToken
. Vous pouvez en apprendre davantage sur l’obtention d’un token d’accès utilisateur·ice en implémentant Facebook Login pour Android. Vous pouvez récupérer le token d’accès utilisateur·ice en inspectant Session.getCurrentAccessToken
.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); accessToken = AccessToken.getCurrentAccessToken(); }
Les SDK Facebook pour iOS gèrent automatiquement les tokens d’accès utilisateur·ice par l’intermédiaire de la classe FBSDKAccessToken
. Vous pouvez en apprendre davantage sur l’obtention d’un token d’accès utilisateur·ice en implémentant Facebook Login pour iOS. Vous pouvez récupérer le token d’accès en inspectant FBSDKAccessToken.currentAccessToken
.
- (void)viewDidLoad { [super viewDidLoad]; NSString *accessToken = [FBSDKAccessToken currentAccessToken]; }
Le SDK Facebook pour JavaScript obtient et conserve automatiquement les tokens d’accès utilisateur·ice dans les cookies du navigateur. Vous pouvez récupérer le token d’accès utilisateur·ice en passant un appel FB.getAuthResponse
, dont la réponse inclut une propriété accessToken
.
FB.getLoginStatus(function(response) { if (response.status === 'connected') { var accessToken = response.authResponse.accessToken; } } );
Veuillez consulter la documentation des SDK Web de Facebook pour obtenir un exemple de code complet.
Lorsque vous créez une application web sans le SDK Facebook pour JavaScript, vous devez générer un token d’accès suivant les étapes décrites dans ce document.
Les tokens d’accès d’application servent à envoyer des requêtes aux API Facebook au nom d’une application plutôt que d’un·e utilisateur·ice. Ils permettent de modifier les paramètres de votre application, de créer et de gérer des utilisateurs tests ou de lire les insights concernant votre application.
Certaines données d’utilisateur·ice qui sont visibles pour une application envoyant une requête avec un token d’accès utilisateur·ice ne le sont pas toujours avec un token d’accès d’application. Si vous lisez et utilisez les données de l’utilisateur·ice dans votre application, utilisez un token d’accès utilisateur·ice plutôt qu’un token d’accès d’application.
Les tokens d’accès d’application sont considérés comme non sécurisés si votre application est définie sur Native/Desktop
dans les paramètres avancés de votre Espace App. Ils ne fonctionneront donc pas avec les appels d’API. En effet, nous supposons que la clé secrète est intégrée aux apps natives ou pour ordinateur de bureau (par conséquent, le token d’accès de l’application généré à l’aide de cette clé n’est pas sécurisé).
Pour générer un token d’accès d’application, vous avez besoin des éléments suivants :
curl -X GET "https://graph.facebook.com/oauth/access_token ?client_id={your-app-id} &client_secret={your-app-secret} &grant_type=client_credentials"
Cet appel renvoie un token d’accès d’application qui peut être utilisé à la place du token d’accès utilisateur·ice pour passer des appels d’API, comme mentionné précédemment. Une fois de plus, pour des raisons de sécurité, un token d’accès d’application ne doit jamais être codé en dur dans le code côté client. Un tel codage permettrait à n’importe quelle personne ayant chargé votre page web ou décompilé votre application d’avoir un accès complet à votre clé secrète, et donc de modifier votre application. Cela signifie que vous devez, la plupart du temps, utiliser les tokens d’accès d’application uniquement dans les appels de serveur à serveur.
Remarque : comme cette requête utilise votre clé secrète, elle ne doit jamais être envoyée dans un code côté client ou dans un fichier binaire d’application qui pourrait être décompilé. Il est essentiel de ne jamais communiquer votre clé secrète à qui que ce soit. Par conséquent, cet appel d’API doit être passé uniquement avec un code côté serveur.
Il existe une autre méthode pour passer des appels à l’API Graph sans devoir utiliser un token d’accès d’application généré. Vous pouvez simplement transmettre votre ID d’application et votre clé secrète en tant que paramètre access_token
lorsque vous passez l’appel :
curl -i -X GET "https://graph.facebook.com/{api-endpoint}&access_token={your-app_id}|{your-app_secret}"
Vous devez décider d’utiliser un token d’accès généré ou de suivre cette méthode en fonction de l’endroit où vous cachez votre clé secrète.
Les tokens d’accès de Page sont utilisés dans les appels d’API Graph pour gérer les Pages Facebook. Pour générer un token d’accès de Page, un·e admin de la Page doit accorder à votre application l’autorisation ou les autorisations de Page requises. Une fois les autorisations accordées, vous pouvez récupérer le token d’accès de Page à l’aide d’un token d’accès utilisateur·ice doté des autorisations requises.
curl -i -X GET "https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token}"
Cette action renvoie une liste de Pages pour lesquelles vous disposez d’un rôle, ainsi que d’autres informations sur chaque Page comme la catégorie de la Page, les autorisations spécifiques dont vous disposez sur chaque Page et le token d’accès de la Page.
{ "data": [ { "access_token": "EAACEdE...", "category": "Brand", "category_list": [ { "id": "1605186416478696", "name": "Brand" } ], "name": "Ash Cat Page", "id": "1353269864728879", "tasks": [ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] }, { "access_token": "EAACEdE...", "category": "Pet Groomer", "category_list": [ { "id": "163003840417682", "name": "Pet Groomer" }, { "id": "2632", "name": "Pet" } ], "name": "Unofficial: Tigger the Cat", "id": "1755847768034402", "tasks": [ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT" ] } ] }
Avec un token d’accès de Page, vous pouvez émettre des appels d’API au nom d’une Page. Par exemple, vous pouvez publier une mise à jour de statut sur une Page (plutôt que sur le journal de l’utilisateur) ou lire les données des statistiques de la Page.
Les tokens d’accès de Page sont propres à chaque Page, chaque admin et chaque application.
À compter du SDK v13.0 pour iOS et Android, dont la sortie est prévue début 2022, un token client sera nécessaire pour tous les appels vers l’API Graph.
Comme les tokens d’application, les tokens client envoient des requêtes d’API Graph au nom d’une application (plutôt que d’un·e utilisateur·ice).
Contrairement à d'autres tokens, les tokens d’accès client ne peuvent pas être utilisés seuls dans les requêtes. Ils doivent être associés à votre ID d’application. Pour ce faire, ajoutez votre token à la fin de votre ID d’application, en le séparant de celui-ci avec une barre verticale (|
), comme suit :
{app-id}|{client-token}
Par exemple :
access_token=1234|5678
Pour récupérer le token d’accès client d’une application, procédez comme suit :
Attendez-vous à ce que la longueur de tous les types de tokens d’accès varie au fil du temps à mesure que Facebook apporte des changements au contenu de ces tokens et à la façon dont ils sont encodés. Vous pouvez vous attendre à ce que les tokens s’étendent ou diminuent avec le temps. Veuillez utiliser un type de données de longueur variable sans taille maximale spécifique pour stocker les tokens d’accès.
Vous pouvez voir une liste de vos tokens d’accès et des informations de débogage pour chaque token dans l’outil Token d’accès.