facebook: jeton d'accès à la page permanent?

193

Je travaille sur un projet qui a des pages facebook comme l'une de ses sources de données. Il en importe périodiquement certaines données sans 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 accéder aux données une fois, puis les conserver. 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 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 s'il offline_accessn'existe plus.

EDIT: Je viens de découvrir qu'il y a une réponse ici: jeton d'accès FB durable pour que le serveur tire les informations de la page FB

Vlasec
la source
2
doublon possible de jeton d'accès FB
Gajus
Il semble que oui. J'ai un meilleur titre, il a une question plus détaillée et nous avons tous les deux à peu près la même réponse acceptée.
Vlasec

Réponses:

638

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

Je suggère d'utiliser l' explorateur d'API Graph 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. Accédez à Mes applications .
  2. Cliquez sur "+ Ajouter une nouvelle application".
  3. Configurez une application de site Web.

Vous n'avez pas besoin de modifier ses autorisations ou quoi que ce soit. Vous avez juste besoin d'une application qui ne disparaîtra pas avant d'avoir terminé avec votre jeton d'accès.

1. Obtenez un jeton d'accès de courte durée utilisateur

  1. Accédez à l' explorateur d'API Graph .
  2. Sélectionnez l'application pour laquelle vous souhaitez obtenir le jeton d'accès (dans le menu déroulant "Application", pas dans le menu "Mes applications").
  3. Cliquez sur "Get Token"> "Get User Access Token".
  4. Dans la fenêtre contextuelle, sous l'onglet "Autorisations étendues", cochez "manage_pages".
  5. Cliquez sur "Obtenir un jeton d'accès".
  6. Accordez l'accès à partir d'un compte Facebook qui a accès pour gérer la page cible. 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 de courte durée.

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

En suivant ces instructions des documents Facebook, faites 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}

saisir l'ID et le secret de votre application et le jeton de courte durée généré à l'étape précédente.

Vous ne pouvez pas utiliser l'explorateur d'API Graph . 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. Comme il s'agit d'une demande GET, vous pouvez simplement accéder à l'URL de votre navigateur.

La réponse devrait ressembler à ceci:

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

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

3. Obtenir l'ID utilisateur

À l'aide du jeton d'accès longue durée, effectuez une demande GET pour

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

Le idchamp est votre ID de compte. Vous en aurez besoin pour la prochaine étape.

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

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 datachamp sous lequel se trouve un tableau d'éléments auxquels l'utilisateur a accès. Recherchez l'élément de la page dont vous souhaitez obtenir le jeton d'accès permanent. Le access_tokenchamp doit avoir votre jeton d'accès permanent. Copiez-le et testez-le dans le débogueur de jeton d'accès . Sous "Expire", il devrait indiquer "Jamais".

Donut
la source
14
Facebook a foiré ça pour que ça ne marche plus. :-( Après l'étape 1.5 ci-dessus (en cliquant sur le bouton «Obtenir le jeton d'accès»), un avertissement rouge apparaît dans la boîte de dialogue suivante, indiquant «Soumettre pour examen de connexion - Certaines des autorisations ci-dessous n'ont pas été approuvées pour une utilisation par Facebook» et également un un cadenas avec le texte "Cela ne permet pas à l'application de publier sur Facebook" apparaît en même temps ci-dessous. Une nouvelle étape doit donc être insérée entre les étapes 1.5 et 1.6 ci-dessus, en lisant "Faites beaucoup de sh * t fastidieux avec votre application, puis soumettez-le pour examen, puis priez et attendez. ":-( Quelqu'un sait-il comment contourner cela pour une application de test pure?
QuestionOverflow
10
message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100 Si vous arrivez à la dernière étape et que le navigateur revient: accédez au débogueur de jetons d'accès FB et testez votre long_lived_access_token. De manière cohérente, j'ai vu qu'au bout de quelques minutes, si vous revenez en arrière et revérifiez le long_lived_access_token, le débogueur de jetons d'accès FB indiquera alors que ce jeton est permanent (expiration: jamais)
AdjunctProfessorFalcon
14
Je jure, si je n'avais pas lu cette réponse, je me cognais encore la tête contre le mur avec un jeton éphémère ... Dommage que la dernière partie ne fonctionne pas ... Je reçois l' (#100) Tried accessing nonexisting field (accounts) on node type (Page)erreur .. impossible de passer à l'étape 5 ... Encore merci ... LE: consultez la dernière partie de la réponse fournie par @Vlasec. Vous pouvez obtenir le jeton d'accès permanent en interrogeant / {pageId}? Fields = access_token & access_token = {long_lived_access_token} afin de résoudre le problème.
Mujnoi Gyula Tamas
15
J'ai dû utiliser cela pour la dernière étape pour obtenir mon jeton d'accès permanent car il dit que les "comptes" n'existent pas, même pour la v2.7:https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
Reado
5
Dans la dernière étape, j'obtiens l'exception suivante {"erreur": {"message": "Erreur de syntaxe \" Fin attendue de la chaîne au lieu de \ "? \". \ "Au caractère 11: access_toke \ u200c \ u200bn" , "type": "OAuthException", "code": 2500, "fbtrace_id": "A8 + gtSaShIO"}} Tout le monde sait comment le résoudre ????
Lucy
89

Voici ma solution en utilisant uniquement Graph API Explorer et Access Token Debugger :

  1. Explorateur d'API graphique:
    • Sélectionnez votre application dans le menu déroulant en haut à droite
    • Sélectionnez «Obtenir le jeton d'accès utilisateur» dans la liste déroulante (champ de jeton d'accès à droite) et sélectionnez les autorisations nécessaires
    • Copier le jeton d'accès utilisateur
  2. Débogueur de jeton d'accès:
    • Collez le jeton copié et appuyez sur "Déboguer"
    • Appuyez sur "Étendre le jeton d'accès" et copiez le jeton d'accès utilisateur généré de longue durée
  3. Explorateur d'API graphique:
    • Collez le jeton copié dans le champ "Jeton d'accès"
    • Faire une demande GET avec "PAGE_ID? Fields = access_token"
    • Recherchez le jeton d'accès permanent à la page dans la réponse (nœud "access_token")
  4. (Facultatif) Débogueur de jeton d'accès:
    • Collez le jeton permanent et appuyez sur "Déboguer"
    • "Expire" devrait être "Jamais"

(Testé avec l'API version 2.9-2.11, 3.0-3.1)

Rob
la source
3
Il n'y a pas de bouton "Étendre le jeton d'accès" à appuyer. Ils l'ont peut-être retiré.
Cesar Bielich
4
Je vois le bouton "Étendre"
Eduardo
2
Après avoir étendu le jeton d'accès (étape 2) et l'avoir à nouveau débogué, il ne doit jamais expirer. Vous pouvez simplement passer les étapes 3 et 4.
daniel_serretti
1
Merci pour cette réponse beaucoup plus facile à comprendre que la grande ci-dessus. C'était vraiment utile.
Paul Laffitte
2
Oh, mec, tu es en feu! Grand merci! J'ai perdu tellement de temps à trouver cette option, car je n'ai pas pu déboguer une application correctement!
Killuminati
11

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

chuycepeda
la source
3
Ça ne marche plus. Le jeton ne dure qu'une heure
flashsnake
@flashsnake avez-vous réellement testé cela sur la v2.8? le débogueur de jetons montre
N'expire
Je ne m'en souviens pas. Je l'ai peut-être testé.
flashsnake
11

J'ai fait un script PHP pour le rendre plus facile. Créez une appli . Dans l' explorateur d'API Graph, sélectionnez votre application et obtenez un jeton d'utilisateur avec l'autorisation manage_pages et publish_pages. Trouvez l'ID de votre page au bas de sa 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;
}
dw1
la source
1
+1 Je viens d'essayer et, parmi toutes ces réponses partiellement dépréciantes, ça fait des merveilles! J'aime cette réponse car les modifications futures sont faciles avec un petit montage ici et là.
Siddhant Rimal
Désolé, je n'ai pas été autorisé à modifier cette réponse. Donc, pour Graph API 2.9, j'ai écrit une autre réponse à la place.
Siddhant Rimal
On dirait qu'ils ont changé des choses avec 2.9 parce qu'aucun de ces exemples ne fonctionne plus
Cesar Bielich
10

Une autre réponse PHP pour vous faciliter la vie. Mis à jour pour Facebook Graph API 2.9 . Remplissez-le et chargez-le.

<?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)

À partir du graphique 2.9, vous pouvez éviter une grande partie des tracas liés à l'obtention d'un jeton d'accès long en cliquant simplement sur Étendre le jeton d'accès au bas de l' outil Débogueur de jeton d'accès , après avoir débogué un jeton d'accès court. Armé d'informations sur pageidet 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 deuxième code vous évite beaucoup de tracas, je recommande d'exécuter le premier code php, sauf si vous êtes très pressé car il recoupe pageid et userid. Le deuxième code ne fonctionnera pas si vous choisissez le jeton utilisateur par erreur.

Merci à dw1 et Rob

Siddhant Rimal
la source
Le bouton Étendre le jeton d'accès n'est pas là, ai-je raté quelque chose?
Cesar Bielich
@CesarBielich: Vous devez d'abord déboguer un jeton d'accès court. Il apparaît sous les résultats lorsque vous déboguez un court jeton d'application. Comme vous ne pouvez pas le voir, vous devez avoir débogué un jeton d'accès utilisateur. Notez que cette réponse ne s'applique pas pour utiliser un jeton d'accès; seul le jeton d'accès à l'application peut être utilisé. Les jetons d' accès utilisateur ne peuvent pas être permanents. Ils peuvent être générés jusqu'à Long Tokens.
Siddhant Rimal
1
@CesarBielich Je pense que vous confondez quelque chose ici. Vous pouvez créer des jetons d'accès pour les utilisateurs, les applications et les pages. Vous devez choisir une application que vous avez créée au lieu de Graph API Explorerdans le champ Application avant de pouvoir demander un jeton.
Siddhant Rimal
@CesarBielich: Utilisez la première méthode si la seconde est trop déroutante pour vous. Vous remplissez simplement les champs de saisie dans le premier et tout se passe automatiquement :)
Siddhant Rimal
Désolé, je commentais un autre post que je viens de faire hier soir lol. Ouais pour une raison quelconque, je ne pouvais pas faire fonctionner le vôtre et me faire un jeton qui n'expire jamais J'ai dû retirer le v2.9dans le deuxième appel et cela a fonctionné pour moi. Wierd
Cesar Bielich
6

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

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

  • Accédez à l'explorateur d'API Graph
  • Sélectionnez votre application dans Application
  • Collez le jeton d'accès longue durée dans le jeton d' accès
  • À côté de Jeton d'accès , choisissez la page pour laquelle vous souhaitez un jeton d'accès. Le jeton d'accès apparaît sous la forme d'une nouvelle chaîne.
  • Cliquez sur i pour voir les propriétés de ce jeton d'accès
  • Cliquez à nouveau sur le bouton «Ouvrir dans l'outil de jeton d'accès» pour ouvrir l'outil «Débogueur de jeton d'accès» pour vérifier les propriétés

Un conseil, cela n'a fonctionné pour moi que lorsque la langue de la page est l' anglais .

Fabien
la source
1
CE GARS !!! 5 bières virtuelles. Cela fonctionne en remplaçant l'étape 5 de la réponse approuvée. version graphique 2.8
Root -
1
J'ai perdu des semaines à pouvoir utiliser l'API Facebook. C'est, à ce jour, le jeton le plus confus et le plus incohérent que j'ai rencontré. Cette solution fonctionne toujours parfaitement .. Octobre 2017
user919426
4

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

phwd
la source
Désolé, peut-être que je n'étais pas assez clair. J'ai lu sur les jetons, j'ai juste besoin d'apprendre comment demander la permission à l'utilisateur et transférer un jeton sur mon application. Il semble que je doive créer une "application" Facebook dont le seul but est de demander des autorisations, n'est-ce pas?
Vlasec
1
@Viasec Corriger la seule façon d'obtenir un jeton d'accès est via une application comme expliqué ici developers.facebook.com/docs/facebook-login
phwd
Merci, je dois l'avoir ignoré d'une manière ou d'une autre, j'ai supposé que c'était quelque part dans la section API, ce qui était faux. Je vais regarder ça, j'espère que ça répond à ma question.
Vlasec
4

Lors de l'obtention du jeton d'accès permanent, j'ai suivi les 5 étapes ci-dessus, comme Donut l'a mentionné. Cependant, lors de la 5ème étape lors de la génération du jeton d'accès permanent, il renvoie le jeton d'accès à longue durée de vie (qui est valide pendant 2 mois) et non le jeton d'accès permanent (qui n'expire jamais). ce que j'ai remarqué, c'est que la version actuelle de l'API Graph est V2.5. Si vous essayez d'obtenir le jeton d'accès permanent avec V2.5, cela donne un jeton d'accès de longue durée.Essayez de faire un appel API avec V2.2 (si vous n'êtes pas en mesure de changer de version dans l'explorateur d'API graphique, appuyez sur l'appel API https: //graph.facebook.com/v2.2/ {account_id} / accounts? access_token = {long_lived_access_token} dans le nouvel onglet avec V2.2), vous obtiendrez alors le jeton d'accès permanent (qui n'expire jamais)

baji shaik
la source
Revenir en arrière des versions de l'API pour obtenir des résultats ne se traduira par plus de travail à l'avenir, j'ai trouvé, d'autant plus que la version API expire après un certain temps.
SlickRemix
il renvoie null :( Comment obtenons-nous le jeton d'accès à la page?
Nancy thakkar
3

En plus des méthodes mentionnées, il convient de mentionner que pour les applications de serveur à serveur, vous pouvez également utiliser cette forme de jeton d'accès permanent: app_id | app_secret Ce type de jeton d'accès est appelé App Token. Il peut généralement être utilisé pour appeler l'API Graph et interroger des nœuds publics au sein de votre back-end d'application. Il est mentionné ici: https://developers.facebook.com/docs/facebook-login/access-tokens

azec-pdx
la source
1
Permet-il tout type d'accès aux pages? Je pense que ce n'est pas le cas et dans ce cas, cela ne répond pas vraiment à la question.
Vlasec
@Vlasec Il vous permet d'accéder aux commentaires sur un post public
Ali Gajani
1
Bien que cela puisse être suffisant pour certains, cela ne répond pas à la question.
Vlasec
2

Grâce à @donut, j'ai réussi à obtenir le jeton d'accès qui n'expire jamais en JavaScript.

// Initialize exchange
fetch('https://graph.facebook.com/v3.2/oauth/access_token?grant_type=fb_exchange_token&client_id={client_id}&client_secret={client_secret}&fb_exchange_token={short_lived_token}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Get the user data
    fetch(`https://graph.facebook.com/v3.2/me?access_token=${json.access_token}`)
    .then((data) => {
        return data.json();
    })
    .then((userData) => {
        // Get the page token
        fetch(`https://graph.facebook.com/v3.2/${userData.id}/accounts?access_token=${json.access_token}`)
        .then((data) => {
            return data.json();
        })
        .then((pageToken) => {
            // Save the access token somewhere
            // You'll need it at later point
        })
        .catch((err) => console.error(err))
    })
    .catch((err) => console.error(err))
})
.catch((err) => {
    console.error(err);
})

puis j'ai utilisé le jeton d'accès enregistré comme celui-ci

fetch('https://graph.facebook.com/v3.2/{page_id}?fields=fan_count&access_token={token_from_the_data_array}')
.then((data) => {
    return data.json();
})
.then((json) => {
    // Do stuff
})
.catch((err) => console.error(err))

J'espère que quelqu'un pourra couper ce code parce que c'est un peu désordonné mais c'était la seule façon dont je pouvais penser.

Vladimir Jovanović
la source
2

Si vous avez l'application Facebook, vous pouvez essayer avec app-id & app-secret.

Comme :

access_token={your-app_id}|{your-app_secret}

il ne sera pas nécessaire de changer fréquemment le jeton.

Niko Jojo
la source
1

Limite de demandes d'application atteinte (# 4) - API FB v2.1 et supérieure

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

Nos comptes de partage sur notre site ont cessé de fonctionner lorsque FB a survolé l'api en v 2.1. Dans notre cas, nous avions déjà une application FB et nous n'utilisions PAS la connexion FB. Donc, ce que nous devions faire était d'obtenir un jeton FB APP pour faire les nouvelles demandes. C'est au 23 août 2016.

  1. Accédez à: https://developers.facebook.com/tools/explorer
  2. Sélectionnez la version api, puis utilisez GET et collez ce qui suit:

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

    Vous voudrez aller chercher votre identifiant d'application et le secret de votre application sur votre page d'application. Page principale du développeur FB Apps

  3. Exécutez la requête graphique et vous verrez:

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

    "app-id"
    et
    "jeton d'application"
    sera l'identifiant de votre application sur la page de votre application FB et le FASH App FB généré que vous venez de recevoir.

  4. Ensuite, testez votre nouveau jeton d'accès APP: testeur de jetons d'accès FB

  5. Vous devriez voir, en collant le

    "jeton d'application"
    dans le testeur de jeton, un jeton basé sur une seule application sans date / heure d'expiration.

Dans notre cas, nous utilisons le FB js sdk, nous avons donc changé notre appel pour qu'il en soit ainsi (veuillez noter que cela n'obtient que le nombre de partages et non le nombre de partages et de commentaires combinés comme auparavant) :

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 pris beaucoup de recherches et un rapport de bogue officiel avec FB pour confirmer que nous devons commencer à faire des demandes tokenisées à l'API FB. En passant, j'ai demandé qu'ils (FB) ajoutent un indice au code d'erreur (# 4) qui mentionne la demande symbolisée.

Je viens de recevoir un autre rapport de l'un de nos développeurs indiquant que notre nombre de commentaires FB est également rompu en raison du nouveau besoin de demandes à jetons, je vais donc le mettre à jour en conséquence.

wittmason
la source
1
C'est toujours l'utilisateur de l'application qui a fait la connexion et a autorisé l'accès à l'application. Quoi qu'il en soit, cela ne semble pas créer un jeton d'accès à la page, donc je pense que ce n'est pas une réponse valide à la question. Intéressant cependant - peut-être faire votre propre Q / A?
Vlasec
1

Beaucoup de ces exemples ne fonctionnent pas, je ne sais pas si c'est à cause de la sortie de 2.9v 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 à l'aide de la vidéo @KFunk et j'ai réussi à la faire fonctionner pour 2.9. J'espère que cela t'aides.

$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;
}
Cesar Bielich
la source
Un bel extrait, mais cette question n'est pas de savoir comment le faire en PHP, mais comment utiliser l'API elle-même, ce qui peut également être fait en Java ou .NET. Par exemple, je devais le faire en Java. Un pseudocode ou un guide étape par étape serait plus utile pour ceux qui n'utilisent pas PHP.
Vlasec
2
@Vlasec Je dirais que cet extrait PHP est assez proche de tout pseudo-code et est très facile à comprendre. Casar utilise simplement des API déjà fournies par Facebook. Le reste de la substance est explicite.
Siddhant Rimal
0

En avril 2020, mes jetons de page précédemment permanents ont commencé à expirer entre 1 et 12 heures. J'ai commencé à utiliser des jetons utilisateur avec la manage_pagespermission d'atteindre l'objectif précédent (interrogation des événements d'une page). Ces jetons semblent être permanents.

J'ai créé un script python basé sur les informations trouvées dans ce post, hébergé sur github.com/k-funk/facebook_permanent_token , pour garder une trace des paramètres requis et des méthodes d'obtention d'un jeton permanent qui fonctionnent.

KFunk
la source
-1

J'ai trouvé cette réponse qui fait référence à cet outil qui m'a vraiment beaucoup aidé.

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

Bamboomy
la source
D'ACCORD. La réponse par beignet fonctionne-t-elle toujours ou at-elle besoin d'une étape supplémentaire?
Vlasec