Question Instagram en temps réel obtenir un message de rappel


Bon, ça marche vraiment sur mes nerfs, mais Instagram doit faire quelque chose au sujet de leur documentation sanglante.

J'essaie déjà depuis une semaine de mettre à jour mon site web avec de nouveaux messages instagram sans rafraîchir la page. Twitter était assez facile, mais instagram n'est qu'un gros désordre. Fondamentalement, j'utilise l'API Instagram en temps réel, le callback et tous ces éléments fonctionnent correctement, mais grâce à Instagram, il ne me renvoie pas d'identifiant du poste qui est nouveau, le rappel ne renvoie que des éléments basiques:

[{"changed_aspect": "media", "object": "tag", "object_id": "nofilter", "time": 1391091743, "subscription_id": xxxxx, "data": {}}]

Avec ces données, vous n'êtes rien, sauf pour le tag, mais je connaissais le tag avant ce rappel aussi, donc peu importe. En fait, il me dit seulement qu'il y a un nouveau poste. J'ai essayé de faire la même demande que lorsque la page se charge, lorsque ce rappel se produit et d'obtenir les publications plus récentes que celles déjà présentes sur la page. Malheureusement, je n'y suis pas encore parvenu. J'ai choisi l'ID de la dernière publication d'Instagram postée et vérifié si elle se trouve dans la demande de rappel, et ce n'est pas le cas.

Qu'est-ce que je fais mal?

J'apprécierais de l'aide, merci!

Modifier:

J'aimerais noter que ce n'est pas seulement un problème avec l'API en temps réel, mais aussi avec l'API normale. Je ne sais pas comment comparer les données, donc je ne reçois pas de doublons dans ma base de données (API normale) ou sur mon site Web (temps réel). Je ne trouve pas de tutoriel ou de documentation (oui, je suis peut-être aveugle), cela m'explique comment comparer des données. Je peux seulement trouver le min_id et le max_id, mais aucune explication de ces identifiants. J'ai vérifié ces identifiants avec les identifiants des résultats, et ils ne correspondent pas. Ce n'est pas un identifiant provenant d'un élément multimédia.

J'ai également vérifié le next_url, et dans ma logique, cela devrait être une URL vers la page suivante (comme Twitter).

Est-ce que je regarde tout cela de travers?


10
2018-01-30 14:27


origine


Réponses:


Ok, répondez à ma vieille réponse, j'ai changé ma façon de faire. Voici comment je vais le faire maintenant.

J'attends toujours 10 hits sur mon abonnement en temps réel, quand j'atteins 10, j'envoie un nouveau thread (s'il n'y en a pas déjà un en cours d'exécution).

Le thread de synchronisation interroge mon DB pour une valeur, j'ai besoin du dernier min_tag_id que j'ai utilisé. Puis je demande:

https://api.instagram.com/v1/tags/*/ media / recent? access_token =*& min_tag_id =*

Essayez-le ici: https://api.instagram.com/v1/tags/montreal/media/recent?access_token=*

Vous obtiendrez 20 résultats et une valeur min_tag_id. Ajoutez-le à votre URL, vous verrez que vous n'obtenez aucun résultat. Attendez quelques secondes et rafraîchissez. Finalement, vous aurez des médias et un nouveau min_tag_id.

(Vous pouvez ignorer la valeur "next_url" qu'ils vous donnent, vous ne l'utiliserez pas).

Fondamentalement, il vous suffit de stocker ce min_tag_id et votre requête jusqu'à ce que vous n'ayez plus de résultats, cela signifie que vous avez terminé.


5
2018-02-06 15:00



Lorsque vous recevez un abonnement, vous devez interroger ce noeud final (balise / recent).

Je commence normalement un thread synchrone pour effectuer ceci afin que je puisse répondre en moins de 2 secondes à Instagram.

Ensuite, vous analysez ce point de terminaison et recherchez une valeur "next url".

Continuez à interroger ce point de fin, en analysant le média et en allant à l'URL suivante jusqu'à ce que vous trouviez votre condition d'arrêt.

Pour moi, j'essaie de faire correspondre 10 enregistrements consécutifs dans ma base de données. Fondamentalement, à partir de la balise, je stocke les médias lorsque ceux-ci respectent les règles de mon entreprise.


0
2018-02-03 14:17



La documentation Instagram est exacte et bien écrite.

L'API temps réel fonctionne correctement. Comme indiqué dans la documentation:

Les données modifiées ne sont pas incluses dans la charge utile, C'est à vous de décider   comment vous souhaitez récupérer les nouvelles données. Par exemple, vous pouvez décider uniquement   pour récupérer de nouvelles données pour des utilisateurs spécifiques, ou après un certain nombre de   les photos ont été postées.

http://instagram.com/developer/realtime/

Vous recevez uniquement une notification indiquant qu'une mise à jour est arrivée sur votre objet abonné. C'est à vous d'appeler l'API pour savoir ce que sont ces données.

Vous pouvez appeler le /tags/[tag-name]/media/recent avec un jeton d'accès que vous avez précédemment enregistré sur votre propre serveur ou base de données. Ensuite, vous devriez être en mesure de comparer les données renvoyées par ce noeud final avec toutes les données que vous avez récupérées précédemment, et simplement extraire les objets que vous n'avez pas encore.


-1
2018-01-30 16:27