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_access
n'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
Réponses:
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.
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
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 à
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:
"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
Le
id
champ 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 à
La réponse JSON doit avoir un
data
champ 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. Leaccess_token
champ 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".la source
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)(#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.https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
Voici ma solution en utilisant uniquement Graph API Explorer et Access Token Debugger :
(Testé avec l'API version 2.9-2.11, 3.0-3.1)
la source
En plus des étapes recommandées dans la réponse Vlasec , vous pouvez utiliser:
/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER
la source
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.
la source
Une autre réponse PHP pour vous faciliter la vie. Mis à jour pour Facebook Graph API 2.9 . Remplissez-le et chargez-le.
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
pageid
etlonglivedtoken
, exécutez le php ci-dessous pour obtenir un jeton d'accès permanent.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.
la source
Graph API Explorer
dans le champ Application avant de pouvoir demander un jeton.v2.9
dans le deuxième appel et cela a fonctionné pour moi. WierdJ'ai essayé ces étapes: https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer
Obtenir un jeton d'accès à la page permanent
Un conseil, cela n'a fonctionné pour moi que lorsque la langue de la page est l' anglais .
la source
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.
la source
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)
la source
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
la source
Grâce à @donut, j'ai réussi à obtenir le jeton d'accès qui n'expire jamais en JavaScript.
puis j'ai utilisé le jeton d'accès enregistré comme celui-ci
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.
la source
Si vous avez l'application Facebook, vous pouvez essayer avec app-id & app-secret.
Comme :
il ne sera pas nécessaire de changer fréquemment le jeton.
la source
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.
Sélectionnez la version api, puis utilisez GET et collez ce qui suit:
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
Exécutez la requête graphique et vous verrez:
Où
et 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.Ensuite, testez votre nouveau jeton d'accès APP: testeur de jetons d'accès FB
Vous devriez voir, en collant le
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) :
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.
la source
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.
la source
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_pages
permission 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.
la source
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.
la source