Jeton d'accès Facebook pour les pages

115

J'ai une page Facebook dont je veux en tirer des choses. La première chose est les flux et d'après ce que j'ai lu, ils sont publics (pas besoin de access_token). Mais je veux aussi obtenir les événements ... et ils ne sont pas publics et ont besoin du access_token.

Je ne veux pas que l'utilisateur se connecte à Facebook ou quoi que ce soit du genre. Je veux juste pousser toutes les données que je peux à partir de cette seule page. C'est pourquoi j'ai déjà jeté de nombreux exemples que j'ai trouvés ici et celui sur https://developers.facebook.com/blog/post/500/ , car ils veulent que l'utilisateur se connecte ou nécessite une action de l'utilisateur qui ne m'intéresse pas.

Ce que je veux, c'est que mon application Facebook ait l'autorisation complète et access_token pour pousser les données de cette page Facebook que je possède (admin). Est-ce possible? J'ai déjà essayé beaucoup de choses mais rien ne semble fonctionner.

J'ai essayé de cliquer sur ceci: https://www.facebook.com/dialog/oauth?client_id=150635421702954&redirect_uri=http://MY_URL/&scope=manage_pages&response_type=token&fields=access_token - changer MY_URL pour modifier chaque site et il demande l'autorisation de modifier chaque page que je possède. Même n'étant pas ce que je veux, j'ai cliqué mais je n'ai eu aucun access_token en retour ...

à côté
la source
Pour obtenir des événements, je le fais maintenant (le access_token expire beaucoup): 1 - Obtenez un jeton de l'explorateur de graphes 2 - Collez-le dans mon code ci-dessous: var authToken = 'THE_CODE_I_GOT'; var feedQuery = 'graph.facebook.com/MY_PAGE_ID/feed'; var feedURL = feedQuery +'?access_token='+ authToken +'&callback=?'; $.getJSON(feedURL,function(data){ var d = data.data; pour (i = 0; i <d.length; i ++) {d [i] .message? $ ("# liste"). append ('<li>' + d [i] .message + '</li>'): ''; // plein d'autres trucs, vous l'avez}}); `
bsides
1
Vous pouvez obtenir un jeton permanent: stackoverflow.com/questions/17197970/…
Josh

Réponses:

269
  1. Accédez à l' explorateur d'API Graph
  2. Choisissez votre application dans le menu déroulant
  3. Cliquez sur "Obtenir un jeton d'accès"
  4. Choisissez l' manage_pagesautorisation (vous aurez peut-être besoin de l' user_eventsautorisation également, pas sûr)
  5. Accédez maintenant à la me/accountsconnexion et copiez votre pageaccess_token
  6. Cliquez sur l'identifiant de votre page
  7. Ajoutez les pages access_tokenaux champs GET
  8. Appelez la connexion que vous voulez (ex: PAGE_ID/events)
ifaour
la source
1
En faisant cela, je suis capable d'appeler des connexions sur toutes mes pages en utilisant un jeton de page d'une seule d'entre elles. N'est-ce pas faux? Existe-t-il un moyen d'obtenir un jeton pour une seule page spécifique qui ne fonctionne pas sur les autres pages?
andresp
112
J'ai escaladé des montagnes et nagé dans les océans, je cherche juste cette réponse Je vous remercie.
IMB
15
Ce processus ne fonctionne plus car le jeton d'accès généré expire lorsque vous vous déconnectez pour une raison quelconque.
coneybeare
1
@coneybeare, veuillez vous référer à ce document pour savoir comment étendre le jeton d'accès
ifaour
1
J'obtiens toujours un résultat vide. Cela fait-il une différence s'il s'agit d'une page d'application?
Max
16

Voir ici si vous souhaitez accorder à une application Facebook un accès permanent à une page (même lorsque vous / le propriétaire de l'application êtes déconnecté):

http://developers.facebook.com/docs/opengraph/using-app-tokens/

"Un jeton d'accès à une application n'expire que si vous actualisez le secret d'application via les paramètres de votre application."

Robin Layfield
la source
6
Cela n'aide pas à obtenir des événements pour une page restreinte.
Sinan
2
Est-ce toujours vrai?!
jeromej
5

La documentation à ce sujet est bonne sinon un peu difficile à trouver.

API Facebook Graph - jetons de page

Après avoir initialisé le fbgraph du nœud , vous pouvez exécuter:

var facebookAccountID = yourAccountIdHere 

graph
.setOptions(options)
.get(facebookAccountId + "/accounts", function(err, res) {
  console.log(res); 
});

et recevez une réponse JSON avec le jeton que vous souhaitez récupérer, situé à l'adresse suivante:

res.data[0].access_token
Anthony
la source