facebook: jeton d'accès à la Page permanente?

je travaille sur un projet qui a des pages facebook comme l'une de ses sources de données. Elle importe périodiquement des données de cette base de données sans avoir besoin d'interface graphique. Ensuite, nous utilisons une application web pour afficher les données que nous avons déjà.

toutes les informations ne sont pas publiques. Cela signifie que je dois avoir accès aux données une fois et puis les garder. 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 obtenir à partir de l'utilisateur, étape par étape? L'utilisateur est un administrateur d'une page facebook, devra-t-il ajouter une application FB de la nôtre à la page?

EDIT: Merci @phwd pour l'astuce. J'ai fait un tutoriel Comment obtenir un token d'accès à une page permanente, même avec offline_access qui n'existe plus.

EDIT: je viens de découvrir qu'il est répondu ici: longue durée d'accès FB-jeton pour le serveur de tirer FB Page info

155
demandé sur Community 2013-06-19 21:52:35

12 réponses

en suivant les instructions de Facebook extension de la documentation des jetons de page j'ai pu obtenir un jeton d'accès à la page qui n'expire pas.

je suggère d'utiliser le Graph API Explorer pour toutes ces étapes sauf indication contraire.

0. Créer L'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. mettre en place un site Web app.

vous n'avez pas besoin de changer ses permissions ou quoi que ce soit. Vous avez juste besoin d'une application qui ne partira pas avant que vous avez terminé avec votre jeton d'accès.

1. Obtenez De L'Utilisateur De Courte Durée Jeton D'Accès

  1. Aller à la Graph API Explorer .
  2. sélectionnez l'application pour laquelle vous souhaitez obtenir le token d'accès (dans le menu déroulant" Application", pas dans le menu" Mes applications").
  3. , Cliquez Sur "Obtenir Un Jeton" > "Obtenir Un Jeton D'Accès Utilisateur".
  4. dans la fenêtre pop-up, sous l'onglet" Permissions étendues", cochez"manage_pages".
  5. Cliquez Sur"Get Access Token".
  6. accorder l'accès à partir D'un compte Facebook qui a accès pour gérer la cible page. Notez que si cet utilisateur perd l'accès, le jeton d'accès final, qui n'expire jamais, cessera probablement de fonctionner.

le jeton qui apparaît dans le champ "jeton D'accès" est votre jeton d'accès éphémère.

2. Générer Un Jeton D'Accès De Longue Durée

suivant ces instructions à partir des documents Facebook, faire une demande 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}

entrer dans L'ID et le secret de votre application et le token de courte durée généré à l'étape précédente.

Vous impossible d'utiliser l'API Graphique de l'Explorateur . Pour une raison quelconque, il reste bloqué sur cette demande. 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 doit ressembler à ceci:

{"access_token":" ABC123 ","token_type":"au porteur","expires_in":5183791}

"ABC123" sera votre jeton d'accès de longue durée. Vous pouvez le mettre dans le Jeton d'Accès Débogueur pour vérifier. Sous " expire "il devrait avoir quelque chose comme"2 mois".

3. Obtenir le code d'utilisateur

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

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

le champ id est votre ID de compte. Vous en aurez besoin pour l'étape suivante.

4. Obtenez Le Jeton D'Accès À La Page Permanente

Faire une demande GET

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

la réponse JSON doit avoir un champ data sous lequel est un tableau des éléments que l'utilisateur a accès. Trouvez l'élément pour la page à partir duquel vous voulez le token d'accès permanent. Le champ access_token devrait avoir votre jeton d'accès permanent. Le copier et de le tester dans le Jeton d'Accès Débogueur . Sous "expire", il devrait être écrit "jamais".

552
répondu donut 2017-10-27 21:51:19

voici ma solution en utilisant seulement Graph API Explorer & Access Token Debugger :

  1. Graph API Explorer:
    • Sélectionnez votre application dans le menu déroulant en haut à droite
    • sélectionnez "Get User Access Token" dans la liste déroulante (Champ du jeton du droit d'accès) et sélectionnez permissions nécessaires
    • copier le token d'accès de l'utilisateur
  2. Jeton D'Accès Débogueur:
    • coller le jeton copié et appuyer sur "Debug"
    • Appuyez sur "Prolonger le Jeton d'Accès" et copier le générés à long terme jeton d'accès utilisateur
  3. Graph API Explorer:
    • coller le jeton copié dans le champ" jeton D'accès
    • Faire une requête GET avec "PAGE_ID?champs=access_token "
    • Trouver le token d'accès à la page permanente dans la réponse (noeud "access_token")
  4. (Optionnel) Débogueur De Token D'Accès:
    • coller le jeton permanent et appuyer sur" Debug "
    • "date d'Expiration" doit être "Jamais"

(Testé avec la version 2.9-2.11, 3.0 de L'API)

56
répondu Rob 2018-07-10 14:32:42

en plus des étapes recommandées dans la réponse Vlasec , vous pouvez utiliser:

10
répondu chuycepeda 2014-08-09 15:21:16

j'ai créé un script PHP pour le rendre plus facile. crée une application . Dans le Graph API Explorer sélectionnez votre application et obtenez un token utilisateur avec manage_pages et la permission publi_pages. Trouvez L'ID de votre page au bas de sa page à propos. Remplissez les variables de configuration et lancez 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;
}
9
répondu dw1 2017-07-29 17:13:13

une autre réponse de PHP pour rendre la vie plus facile. mise à Jour pour Facebook API Graphique 2.9 . Il vous suffit de remplir " er et de 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)

graphe 2.9 à partir de là, vous pouvez sauter la plupart des tracas d'obtenir un jeton d'accès long en cliquant simplement sur Extend Access Token au bas de l'outil Access Token Debugger tool , après avoir débogué un court jeton d'accès. Armé d'informations sur pageid et longlivedtoken , exécutez le php ci-dessous pour obtenir un token 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 épargne beaucoup de tracas, je vous recommande d'exécuter le premier code php à moins que vous ne soyez pressés car il contre-vérifie la pageid et l'userid. Le second code ne fonctionnera pas si vous choisissez user token par erreur.

merci à dw1 et Rob

8
répondu Siddhant Rimal 2017-05-23 11:47:31

si vous ne demandez que des données de page, vous pouvez utiliser un token d'accès à la page. Vous n'aurez à autoriser l'utilisateur qu'une seule fois pour obtenir le token d'accès utilisateur; prolongez-le à deux mois de validité puis demandez le token pour la page. Tout cela est expliqué dans scénario 5 . Remarque, que les acquis de la page jeton d'accès n'est valable aussi longtemps que le jeton d'accès utilisateur est valide.

4
répondu phwd 2014-08-09 15:23:10

tout en obtenant le jeton d'accès permanent j'ai suivi ci-dessus 5 étapes comme Donut mentionné. Cependant dans la 5ème étape tout en générant le jeton d'accès permanent son retour le jeton d'accès de longue durée (qui est valide pour 2 mois) pas le jeton d'accès permanent(qui n'expire jamais). ce que j'ai remarqué, c'est que la version actuelle de L'API graphique est V2.5. Si vous essayez d'obtenir le jeton d'accès permanent avec V2.5 son token d'accès donnant de longue durée de vie.Essayez de faire appel à L'API avec V2.2 (si vous n'êtes pas en mesure de changer la version dans l'Explorateur d'api de graphique,appuyez sur L'appel D'API https://graph.facebook.com/v2.2 / {account_id} / accounts?access_token={long_lived_access_token} dans le nouvel onglet avec V2.2) alors vous obtiendrez le token d'accès permanent (qui n'expire jamais)

4
répondu baji shaik 2016-03-20 03:25:02

j'ai essayé ces étapes: https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer

Permanente Page Jeton D'Accès

  • Aller à l'API Graphique de l'Explorateur
  • Sélectionnez votre app dans Application
  • coller le jeton d'accès de longue durée dans jeton D'accès
  • à côté de Token D'accès , choisissez la page pour laquelle vous voulez un token d'accès. Le jeton d'accès apparaît comme une nouvelle chaîne.
  • cliquez sur i pour voir les propriétés de ce token d'accès
  • cliquez à nouveau sur le bouton" Ouvrir dans L'outil Token D'accès "pour ouvrir l'outil" débogueur de Token D'accès" pour vérifier les propriétés

Un Conseil, il n'a travaillé que pour moi lorsque la langue de la page est anglais .

4
répondu Fabian 2016-12-15 12:26:26

en plus des méthodes mentionnées, il est important de mentionner que pour les applications serveur-à-serveur, vous pouvez également utiliser cette forme de token d'accès permanent: app_id / app_secret Ce type de token d'accès est appelé App Token. Il peut généralement être utilisé pour appeler L'API de graphe et la requête pour les noeuds publics dans la partie arrière de votre application. Il est mentionné ici: https://developers.facebook.com/docs/facebook-login/access-tokens

3
répondu azec_pdx 2015-03-08 16:47:17

limite de demande atteinte (#4) - FB API v2.1 et plus

cette réponse m'a conduit à la" réponse ultime pour nous " et donc elle est très liée donc je l'ajoute ici. Bien qu'il soit lié à ce qui précède, il est différent et il semble que FB a simplifié le processus.

nos comptes de partage sur notre site ont cessé de fonctionner lorsque FB a relayé l'api à V 2.1. Dans notre cas, nous avions déjà une application FB et nous étions Ne pas utiliser le login FB. Donc ce que nous avions à faire était d'obtenir un fb APP Token pour faire les nouvelles requêtes. C'est comme de Août. 23 2016.

  1. passer à: https://developers.facebook.com/tools/explorer
  2. sélectionnez la version api, puis utilisez GET and paste, comme suit:

    /oauth/access_token?client_id={app-id}&client_secret={app-secret}&grant_type=client_credentials
    

    vous voudrez aller chercher votre app id et votre app secret de votre page app. Principal FB Apps page développeur

  3. lancez la requête graph et vous verrez:

    {
       "access_token": "app-id|app-token",
       "token_type": "bearer"
    }
    

    "app-id"
    et
    "app-token"
    seront votre identifiant d'application à partir de votre page d'application FB et le HASH D'application FB généré que vous venez de recevoir.
  4. Ensuite allez tester votre nouveau token D'accès APP: FB Token D'accès testeur

  5. vous devriez voir, en collant le

    "app-token"
    dans le token tester, un seul token basé sur app sans date/heure d'expiration.

dans notre cas, nous utilisons le FB js sdk donc nous avons changé notre appel pour être comme (s'il vous plaît noter ce obtient seulement le nombre d'actions et non le nombre d'actions et de commentaires combinés comme il était) :

FB.api(
    '/','GET',{
    // this is our FB app token for our FB app 
        access_token: FBAppToken,
        "id":"{$shareUrl}","fields":"id,og_object{ engagement }"
}

Cela fonctionne maintenant correctement. Cela a nécessité de nombreuses recherches et un rapport de bogue officiel avec FB pour confirmer que nous devions commencer à faire des requêtes tokenisées à L'api FB. Comme mise à part, j'ai demandé qu'ils (FB) ajoutent un indice au code D'erreur (#4) qui mentionne la requête tokenisée.

je viens de recevoir un autre rapport de l'un de nos devs que notre compte de commentaires FB est cassé aussi bien en raison du nouveau besoin de demandes tokenized donc je vais mise à jour de ce en conséquence.

1
répondu wittmason 2016-08-23 15:12:13

beaucoup de ces exemples ne fonctionnent pas, pas sûr si c'est à cause de 2,9 v sortant mais je me cognais la tête. Quoi qu'il en soit, j'ai pris la version @dw1 et l'ai légèrement modifiée avec l'aide de la vidéo @KFunk et j'ai obtenu ce travail pour moi pour 2,9. Espérons que cette aide.

$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/{$args['pageid']}?fields=access_token&access_token={$longtoken}")); // get user id
    $finaltoken=$r->access_token;
    return $finaltoken;
}
1
répondu Cesar Bielich 2017-06-19 21:15:09

j'ai trouvé cette réponse qui se réfère à cet outil qui a vraiment aidé beaucoup.

j'espère que cette réponse est toujours valable lorsque vous lisez ceci.

0
répondu Bamboomy 2018-09-07 08:27:54