L'API Facebook Graph ne donne pas de données avant 2011?
-
28-10-2019 - |
Question
Je suis l'auteur de Application fazzle sur iPhone. Ce que fait mon application, c'est télécharger les mises à jour de l'état de l'utilisateur et les trier dans diverses commandes (par exemple, la plus appréciée, la plus commentée).
Je me demande si Facebook autorise les développeurs à obtenir des mises à jour de statut de l'utilisateur depuis le jour où ils ont rejoint Facebook, car lorsque j'ai lancé l'application, je ne peux obtenir que les statuts des utilisateurs à partir de 2009. Aujourd'hui, je viens de découvrir que Facebook limite les appels de l'API graphiques jusqu'à 2011 .
J'ai essayé de regarder des documents, demandé ici, et a contacté Facebook via leur forum. Cependant, jusqu'à présent, il n'y a pas de mot sur cette limitation dans l'API graphique. Ai-je oublié quelque chose? Y a-t-il une autre façon pour moi d'obtenir des données pour les mises à jour de statut avant 2011?
Vous pouvez le tester vous-même ici. Utilisez cette demande GET:
https://graph.facebook.com/(your_user_id)/statuses?limit=99999
Faites défiler vers le bas et vous découvrirez que tout n'est pas téléchargé.
Est-ce à cause du conflit d'intérêts avec Facebook? Si c'est le cas, ça craint.
Enregistré comme un bogue ici. En espérant toujours que quelqu'un puisse souligner mes erreurs s'il y en a.
La solution
Vous pouvez absolument obtenir des messages plus anciens de Graph API; Il n'y a pas de limite (du moins pas que je sache). Utilisez le since
et until
paramètres pour reprendre les résultats, au lieu de offset
:
https://graph.facebook.com/me/feed?access_token=[token]&until=1165474447
Documentation pour Pagination ne va pas très en profondeur since
et until
:
Lors de l'interrogation des connexions, il existe plusieurs paramètres utiles qui vous permettent de filtrer et de passer une page à travers des données de connexion:
- Limite, décalage: https://graph.facebook.com/me/likes?limit=3`
- Jusqu'à ce que, depuis (un horodat Unix ou toute date acceptée par strtotime):
https://graph.facebook.com/search?until=yesterday&q=orange
Mais en gros, until
C'est comme dire "donnez-moi des messages jusqu'à cette date", et puisque est similaire, "donnez-moi des messages depuis cette date". Ainsi, vous pouvez faire défiler jusqu'à ce que le flux d'un utilisateur en utilisant une boucle quelque chose comme ceci:
// pseudocode
timestamp = now
do {
posts = graph.get(/me/feed?until=timestamp)
if posts.length == 0: break;
// process posts
timestamp = posts[0].created_time // first should be the oldest, in theory
} while (1)
Remplacer until
avec since
et le plus ancien created_time
Avec les plus récents à avancer dans le temps, par exemple pour saisir tous les messages plus récents depuis la dernière fois que l'utilisateur a exécuté l'application.
Autres conseils
Facebook a depuis a confirmé cela comme un bogue. Si vous avez toujours suivi le tracker de bogues de Facebook, cela signifie malheureusement qu'il y a très peu ou une chance qu'ils corrigeront cela.
Vous devrez paginer. La limite est limitée. Lisez s'il vous plaît http://developers.facebook.com/blog/post/478/