web-dev-qa-db-fra.com

Jeton d'accès FB de longue durée permettant au serveur d'extraire les informations de page FB

Je suis conscient qu'il y a beaucoup de questions sur les clés d'accès à Facebook et le chagrin qu'elles causent, mais malgré de nombreuses expériences et la lecture de nombreux articles de blogues frustrants et vagues (FB et autres), j'ai toujours du mal à obtenir une réponse claire à mes besoins. . Permettez-moi de décomposer succinctement mon processus jusqu'à présent:

  • Je crée un site qui, côté serveur, doit extraire les publications/statuts d'une page Facebook unique
  • Je suis un administrateur de cette page Facebook
  • J'ai créé une application Facebook
  • À l'aide de Facebook Graph API Explorer , j'ai généré une clé de courte durée, connectée à mon application et à mon compte, qui autorise mon compte à afficher les jetons d'accès à mes pages.
  • J'ai converti ma clé de courte durée en une clé de longue durée (60 jours) ala scenario 4 from this

Et voici où je suis coincé. Ma clé de 60 jours fonctionne correctement pour que mon serveur puisse extraire les informations nécessaires de la page, mais pour autant que je sache, il n’ya aucun moyen d’étendre par programme cette clé de 60 jours. Je ne connais pas non plus de moyen de générer une nouvelle clé de courte durée sans aller manuellement à l'explorateur Facebook Graph API et en créer une.

Comme c’est mon serveur qui adresse les requêtes à l’API de Facebook et non pas à un système basé sur l’utilisateur (où je pourrais facilement demander à un utilisateur d’autoriser à nouveau l’application Facebook), cela crée un système très fastidieux. Depuis que Facebook est obsolète offline_access, n'y a-t-il pas vraiment de moyen permanent pour que mon serveur extrait les informations de ma propre page? Dois-je vraiment créer manuellement une nouvelle clé et mettre à jour manuellement mon serveur avec elle tous les 60 jours?

Ou y a-t-il quelque chose qui me manque?

Mise à jour:

Le guide pas à pas précédemment trouvé ici a été migré dans son propre réponse .

112
redhotvengeance

Voici les étapes précédentes de la question: elles ont été migrées vers cette réponse.

Après avoir constaté qu'il est possible de générer un jeton d'accès à la page Facebook qui n'expire pas (avec l'aide de @Igy), voici un guide détaillé, étape par étape, pour tous ceux qui cherchent la même chose:

  1. Assurez-vous que vous êtes l'administrateur de la page FB à partir de laquelle vous souhaitez extraire des informations.
  2. Créer une application FB (doit être avec le même compte d'utilisateur que l'administrateur de la page)
  3. Rendez-vous sur le Facebook Graph API Explorer
  4. En haut à droite, sélectionnez l'application FB que vous avez créée dans la liste déroulante "Application".
  5. Cliquez sur "Obtenir un jeton d'accès"
  6. Assurez-vous d'ajouter le manage_pages autorisation
  7. Convertissez ce jeton d'accès de courte durée en un jeton de longue durée en appelant cet API Graph: https://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
  8. Récupérez le nouveau jeton d'accès de longue durée
  9. Faites un appel à l'API Graph pour afficher vos comptes à l'aide du nouveau jeton d'accès longue durée: https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
  10. Prenez le access_token pour la page sur laquelle vous allez extraire des informations
  11. Lint le jeton pour voir qu'il est réglé sur Expires: Never!

Ça devrait le faire. Vous devriez maintenant avoir un jeton d'accès à la page Facebook qui n'expire pas, sauf si:

  • Vous changez le mot de passe de votre compte Facebook
  • Vous perdez l'accès administrateur pour la page cible
  • Vous supprimez ou désautorisez votre application Facebook

N'importe lequel de ces cas rendra le jeton d'accès invalide.

Si vous obtenez (#100) Tried accessing nonexisting field (accounts) on node type (Page), allez au Access Token Debugger , copiez la valeur de User ID, et utilisez-le pour remplacer le "moi" de l'URL à l'étape 9.

182
redhotvengeance

Ceci est couvert dans le dépréciation de l'accès hors ligne document

Utilisez le jeton 60 jours pour que l’administrateur de la page récupère un jeton d’accès à la page (via /PAGE_ID?fields=access_token ou /me/accounts) - le jeton d'accès à la page n'aura pas de date d'expiration

15
Igy

Merci beaucoup à @redhotvengeance pour ce guide étape par étape.

Après un certain temps, la documentation de Facebook décrit clairement:

https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension

Extension des jetons d'accès aux pages

Les applications peuvent récupérer un jeton d'accès à la page des utilisateurs de l'administrateur de la page lorsqu'ils s'authentifient avec l'autorisation manage_pages. Si le jeton d'accès utilisateur utilisé pour extraire ce jeton d'accès à la page est de courte durée, le jeton d'accès à la page sera également de courte durée.

Pour obtenir un jeton d'accès à la page ayant une durée de vie plus longue, remplacez le jeton d'accès utilisateur par un autre, comme indiqué ci-dessus, puis demandez le jeton d'accès à la page. Le jeton d'accès à la page résultant n'aura aucune heure d'expiration.

1
Athlan

Vous pouvez également copier et coller depuis le tableau de bord de l'application sur facebook. Les marches:

  1. Allez à https://developers.facebook.com

  2. Sélectionnez votre application dans le coin supérieur droit de la page (image montrant à quoi elle ressemble)

  3. Cliquez sur Messenger dans les options sur la gauche (il passera automatiquement à la configuration) (image de ce à quoi il ressemble)
  4. Accédez à la section "Génération de jetons" de la page. Sélectionnez la page pour laquelle vous souhaitez générer le jeton. (image de quoi cette section ressemble)
  5. Copiez et collez votre jeton de page où vous en avez besoin.

N'oubliez pas qu'en théorie, votre jeton n'expire pas, mais qu'il est directement lié à votre compte facebook. Disons que vous modifiez votre mot de passe ou supprimez les autorisations entre votre compte et votre application, votre jeton ne sera plus valide.

0
Heidi