213 votes

facebook : jeton d'accès permanent aux pages ?

Je travaille sur un projet dont les pages Facebook sont l'une des sources de données. Il importe périodiquement des données à partir de ces pages, sans interface graphique. Ensuite, nous utilisons une application web pour montrer les données que nous avons déjà.

Toutes les informations ne sont pas publiques. Cela signifie que je dois obtenir l'accès aux données une fois et les conserver ensuite. Cependant, je ne connais pas le processus et je n'ai pas encore trouvé de bon tutoriel à ce sujet. Je suppose que j'ai besoin d'un access_token comment puis-je l'obtenir de l'utilisateur, étape par étape ? L'utilisateur est l'administrateur d'une page Facebook, devra-t-il ajouter une de nos applications FB à la page ?

EDIT : Merci @phwd pour l'astuce. J'ai fait un tutoriel sur la façon d'obtenir un jeton d'accès permanent à une page, même avec offline_access n'existe plus.

EDIT : Je viens de découvrir que la réponse se trouve ici : Un code d'accès FB de longue durée pour que le serveur puisse obtenir des informations sur les pages FB.

673voto

donut Points 1270

En suivant les instructions données par Facebook extension de la documentation sur les jetons de page J'ai pu obtenir un jeton d'accès à la page qui n'expire pas.

Je suggère d'utiliser le Explorateur d'API graphique pour toutes ces étapes, sauf indication contraire.

0. Créer une application Facebook

Si vous avez déjà une application passez à l'étape 1.

  1. Aller à Mes applications .
  2. Cliquez sur "+ Ajouter une nouvelle application".
  3. Créez une application pour le site web.

Vous n'avez pas besoin de changer ses permissions ou quoi que ce soit. Tu as juste besoin d'une application qui ne disparaîtra pas avant que tu aies utilisé ton jeton d'accès.

1. Obtenir le jeton d'accès à court terme de l'utilisateur

  1. Allez à la Explorateur d'API graphique .
  2. Sélectionnez l'application pour laquelle vous souhaitez obtenir le jeton d'accès (dans le menu déroulant "Application", et non dans le menu "Mes applications").
  3. Cliquez sur "Get Token" > "Get User Access Token".
  4. Dans la fenêtre pop-up, sous l'onglet "Extended Permissions", cochez "manage_pages".
  5. Cliquez sur "Get Access Token".
  6. Accordez l'accès à partir d'un compte Facebook qui a le droit de gérer la page cible. Notez que si cet utilisateur perd son accès, le jeton d'accès final, qui n'expirera jamais, cessera probablement de fonctionner.

Le jeton qui apparaît dans le champ "Jeton d'accès" est votre jeton d'accès de courte durée.

2. Générer un jeton d'accès à longue durée de vie

Suivant ces instructions de la documentation de Facebook, faites une requête GET à

https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} &client_secret= {app_secret} &fb_exchange_token= {short_lived_token}

en saisissant l'identifiant et le secret de votre application, ainsi que le jeton éphémère généré à l'étape précédente.

Vous ne peut pas utiliser l'explorateur d'API graphique . Pour une raison quelconque, il reste bloqué sur cette requête. Je pense que c'est parce que la réponse n'est pas JSON, mais une chaîne de requête. Puisque c'est une requête GET, vous pouvez simplement aller à l'URL dans votre navigateur.

La réponse devrait ressembler à ceci :

{"access_token" :" ABC123 ","token_type":"bearer","expires_in":5183791}

"ABC123" sera votre jeton d'accès à longue durée de vie. Vous pouvez le mettre dans le fichier Débogueur de jetons d'accès à vérifier. Sous "Expires", il devrait y avoir quelque chose comme "2 mois".

3. Obtenir l'ID utilisateur

En utilisant le jeton d'accès à longue durée de vie, faites une demande GET à

https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}

El id est l'identifiant de votre compte. Vous en aurez besoin pour l'étape suivante.

4. Obtenir un jeton d'accès permanent à la page

Faites une demande GET à

https://graph.facebook.com/v2.10/ {count_id} /comptes?access_token= {long_lived_access_token}

La réponse JSON doit comporter un data sous lequel se trouve un tableau d'éléments auxquels l'utilisateur a accès. Trouvez l'élément correspondant à la page pour laquelle vous souhaitez obtenir le jeton d'accès permanent. Le site access_token doit contenir votre jeton d'accès permanent. Copiez-le et testez-le dans le champ Débogueur de jetons d'accès . Sous "Expire", il devrait être indiqué "Jamais".

95voto

Rob Points 392

Voici ma solution en utilisant uniquement Explorateur d'API graphique & Débogueur de jetons d'accès :

  1. Explorateur d'API graphique :
    • Sélectionnez votre application dans le menu déroulant en haut à droite.
    • Sélectionnez "Get User Access Token" dans la liste déroulante (à droite du champ du jeton d'accès) et sélectionnez les autorisations nécessaires.
    • Copier le jeton d'accès de l'utilisateur
  2. Accéder au débogueur de jetons :
    • Collez le jeton copié et appuyez sur "Debug".
    • Cliquez sur "Étendre le jeton d'accès" et copiez le jeton d'accès utilisateur à longue durée de vie généré.
  3. Explorateur d'API graphique :
    • Collez le jeton copié dans le champ "Jeton d'accès".
    • Effectuez une requête GET avec "PAGE_ID?fields=access_token".
    • Trouver le jeton d'accès permanent à la page dans la réponse (noeud "access_token")
  4. (Facultatif) Accédez à Token Debugger :
    • Collez le jeton permanent et appuyez sur "Debug".
    • "Expire" devrait être "Jamais"

(Testé avec API Version 2.9-2.11, 3.0-3.1)

12voto

dw1 Points 841

J'ai fait un script PHP pour rendre cela plus facile. Créer une application . Dans le Explorateur d'API graphique sélectionnez votre application et obtenez un jeton d'utilisateur avec les droits manage_pages et publish_pages. Trouvez l'ID de votre page au bas de la page À propos. Remplissez les variables de configuration et exécutez le script.

<?php
$args=[
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
];

echo generate_token($args);

function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.8/{$userid}/accounts?access_token={$longtoken}")); // get permanent token
    foreach($r->data as $d) if($d->id==$args['pageid']) return $d->access_token;
}

11voto

chuycepeda Points 61

En plus des étapes recommandées dans le Vlasec réponse, vous pouvez utiliser :

11voto

Siddhant Rimal Points 469

Une autre réponse de PHP pour faciliter la vie. Mise à jour pour Facebook Graph API 2.9 . Il suffit de le remplir et de le charger.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'usertoken'=>'',
    'appid'=>'',
    'appsecret'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/oauth/access_token?grant_type=fb_exchange_token&client_id={$args['appid']}&client_secret={$args['appsecret']}&fb_exchange_token={$args['usertoken']}")); // get long-lived token
    $longtoken=$r->access_token;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/me?access_token={$longtoken}")); // get user id
    $userid=$r->id;
    $r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$userid}?fields=access_token&access_token={$longtoken}")); // get permanent token
    if($r->id==$args['pageid']) $finaltoken=$r->access_token;
    return $finaltoken;
}
?>

Addendum : (alternative)

Graphique 2.9 et suivants, vous pouvez vous passer de l'obtention d'un jeton d'accès long en cliquant simplement sur Étendre le jeton d'accès au bas de la page Outil débogueur de jetons d'accès après avoir débogué un jeton d'accès court. Armé d'informations sur pageid y longlivedtoken Exécutez le php ci-dessous pour obtenir un jeton d'accès permanent.

<?php
$args=[
/*-- Permanent access token generator for Facebook Graph API version 2.9 --*/
//Instructions: Fill Input Area below and then run this php file
/*-- INPUT AREA START --*/
    'longlivedtoken'=>'',
    'pageid'=>''
/*-- INPUT AREA END --*/
];
echo 'Permanent access token is: <input type="text" value="'.generate_token($args).'"></input>';
function generate_token($args){
$r=json_decode(file_get_contents("https://graph.facebook.com/v2.9/{$args['pageid']}?fields=access_token&access_token={$args['longlivedtoken']}"));
return $r->access_token;
}
?>

Bien que le second code vous évite bien des tracas, je vous recommande d'exécuter le premier code php, à moins que vous ne soyez très pressé, car il effectue un contrôle croisé entre pageid et userid. Le second code ne fonctionnera pas si vous choisissez le jeton d'utilisateur par erreur.

Merci à dw1 y Rob

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X