Je suis conscient qu'il existe de nombreuses questions sur les jetons d'accès Facebook et le chagrin qu'ils causent, mais malgré de nombreuses expérimentations et la lecture de nombreux articles de blog frustrants (FB et autres), j'ai toujours du mal à obtenir une réponse claire à mes besoins. . Permettez-moi de décrire succinctement mon processus jusqu'à présent:
- Je crée un site qui, côté serveur, doit extraire les publications / statuts d'une seule page Facebook
- Je suis administrateur de cette page Facebook
- J'ai créé une application Facebook
- À l'aide de l' explorateur d'API Facebook Graph , 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 de mes pages.
- J'ai converti ma clé de courte durée en une clé de longue durée (60 jours) dans le scénario 4 de ce
Et voici où je suis coincé. Ma clé de 60 jours fonctionne bien pour que mon serveur extrait les informations nécessaires de la page, mais pour autant que je sache, il n'y a aucun moyen d'étendre cette clé de 60 jours par programme. Je ne connais pas non plus de moyen de générer une nouvelle clé de courte durée sans accéder manuellement à l'explorateur d'API Facebook Graph et en créer une.
Comme c'est mon serveur qui fait les demandes à l'API Facebook et non à 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 maladroit. Depuis que Facebook est obsolète offline_access
, n'y a-t-il vraiment aucun moyen permanent pour que mon serveur tire des informations de ma propre page? Dois-je vraiment créer une nouvelle clé à la main et mettre à jour manuellement mon serveur avec elle tous les 60 jours?
Ou y a-t-il quelque chose qui me manque?
Mettre à jour:
Le guide étape par étape qui a été précédemment trouvé ici a été migré vers sa propre réponse .
la source
Réponses:
Ayant 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 une description claire et étape par étape pour tous ceux qui recherchent la même chose:
manage_pages
autorisationhttps://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>
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
access_token
pour la page à partir de laquelle vous allez extraire des informationsExpires: Never
!Ça devrait le faire. Vous devriez maintenant avoir un jeton d'accès à la page Facebook qui n'expire pas, sauf si:
Chacun de ces éléments rendra le jeton d'accès invalide.
Si vous obtenez
(#100) Tried accessing nonexisting field (accounts) on node type (Page)
, accédez au débogueur de jeton d 'accès , copiez la valeur deUser ID
et utilisez - la pour remplacer la partie «moi» de l' URL à l 'étape 9.la source
manage_pages
option est sous l'Extended Permissions
onglet.Ceci est couvert dans le document de dépréciation de l'accès hors ligne
Utilisez le jeton de 60 jours pour l'administrateur de la page pour récupérer 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 délai d'expirationla source
page_access_token
par code en javascript? Comme la façon d'obteniruser_access_token
>FB.getAuthResponse()['accessToken'];
Merci!Une approche qui fonctionne en 2019
J'essayais récemment de réaliser quelque chose de similaire (au cas d'utilisation décrit dans ce fil), mais je voulais m'assurer de respecter les politiques actuelles de Facebook, alors j'ai fait un peu de recherche et ici je partage ce que j'ai trouvé.
Mon cas d'utilisation
Donc, comme je l'ai déjà dit, mon cas d'utilisation est très similaire à celui décrit ici; C'est:
C'est, à mon avis, un cas d'utilisation légitime, mais je ne savais pas comment le mettre en œuvre d'une manière conforme aux politiques de Facebook.
La réponse acceptée
J'ai suivi les étapes de la réponse acceptée et cela a fonctionné, sauf que les choses semblent avoir changé: maintenant, même si le jeton de page généré n'expire pas,
access to data
il expire après environ 60 jours. Vous verrez cela également si vous suivez la procédure et inspectez le jeton de page dans l' outil FB Token Debugger .En outre, le fait que les jetons de page générés soient liés au compte utilisateur est également malheureux, car si l'utilisateur met à jour son mot de passe, le jeton de page est également invalidé.
Comment le faire en 2019
Après plusieurs heures de recherche, je suis tombé sur l'article de documentation Facebook suivant: Business Login for Direct Businesses .
Il s'avère qu'il est désormais possible, en suivant les étapes décrites dans l'article ci-dessus, de générer un jeton de page qui n'est associé à aucun compte utilisateur Facebook particulier et qui n'expirera pas (sauf si l'application FB est supprimée ou le jeton d'application sous-jacent est supprimé, vous savez ...)
Voici donc les étapes et les parties les plus importantes:
manage_pages
etpublish_pages
.Ce jeton n'expirera jamais et ne sera pas lié à un utilisateur Facebook en particulier, c'est donc exactement ce dont nous avons besoin!
La dernière partie consiste à vous assurer que votre application Facebook est approuvée par Facebook. C'est en fait la partie la plus importante, car toute la procédure est sans valeur si les gens ne voient pas nos messages.
Je voulais être sûr que je pouvais me fier à la procédure ci-dessus pour créer quelque chose pour mon client sans que Facebook le rejette à la fin, donc, au préalable (c'est-à-dire avant de commencer à travailler sur le projet de mon client), j'ai parcouru tout le processus de création d'une page, d'une application, d'un compte Business Manager, etc. J'ai vérifié mon entreprise. J'ai soumis mon application pour examen. Dans ma demande, j'ai été très précis sur mon cas d'utilisation et j'ai souligné que l'application était destinée à un «auto-usage» (c'est-à-dire que l'organisation développe une application pour elle-même, pas pour d'autres utilisateurs de Facebook). J'ai été approuvé sans moins de 24 heures.
Quelques autres remarques sur le processus d'examen des applications:
curl
utilitaire (pour générer le jeton de page et publier des messages sur la page Facebook). J'ai également montré comment j'utilisais Business Manager pour lier l'utilisateur système à la page et générer un jeton, etc.J'espère que ces informations seront utiles aux personnes ayant des cas d'utilisation similaires.
la source
Un grand merci à @redhotvengeance pour le guide étape par étape.
Après un certain temps, maintenant il est clairement décrit dans la documentation Facebook:
https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension
la source
Vous pouvez également copier et coller à partir du tableau de bord de l'application sur Facebook. Les marches:
Accédez à https://developers.facebook.com
Sélectionnez votre application dans le coin supérieur droit de la page (photo de ce à quoi elle ressemble)
Gardez à l'esprit que bien qu'en théorie votre jeton n'expire pas, il est directement lié à tout compte Facebook auquel vous êtes connecté. Donc, disons que vous modifiez votre mot de passe ou que vous supprimez les autorisations entre votre compte et votre application, votre jeton ne sera plus valide.
la source