2015-10-02 20 views
11

Sto lavorando a un sistema i cui utenti finali sono proprietari di piccole e medie imprese. L'obiettivo di questa funzione è di ottenere immagini (in tempo reale) che altri postano su Instagram e taggati con la loro sede commerciale. Si noti che questo è diverso dalle immagini che sono @ -tagged con l'account aziendale (cioè vogliamo this feed, non this feed).Come possiamo ottenere le notifiche sulla posizione Instagram in tempo reale per i nostri clienti?

Avevo intenzione di utilizzare il sistema di sottoscrizioni in tempo reale documentato here poiché spiega che è possibile sottoscrivere un ID di posizione e ricevere notifiche sui nuovi supporti in quella posizione. L'abbiamo implementato e abbiamo immediatamente iniziato a fallire perché c'è un limite non pubblicato di 30 iscrizioni (suppongo che avremmo dovuto fare più googling prima di iniziare a crearlo).

Questo è fondamentalmente lo stesso problema delineato here ma quella conversazione è davvero obsoleta e non sono sicuro che l'obiettivo finale sia esattamente lo stesso poiché le soluzioni proposte non mi aiuteranno.

Ci sono troppi account clienti per registrare più applicazioni per ottenere abbonamenti sufficienti (dovremmo registrare migliaia di app). Speravamo che potessimo usare un token di accesso di un utente di Instagram ottenuto attraverso un flusso di lavoro Oauth2 per creare più abbonamenti, ma i miei esperimenti con quello non sono stati eliminati. So che altre persone hanno utilizzato abbonamenti di aree geografiche di grandi dimensioni invece di abbonamenti di località, ma questo non sarà sufficiente per noi.

Sono frustrato e confuso da questo problema perché:

  1. Sembra che altre applicazioni sono sempre queste immagini in tempo reale ad una scala che non si adatterebbe il limite di 30 abbonamenti.
  2. Non riesco a immaginare che molti casi d'uso fossero 30 abbonamenti per applicazione sarebbe una caratteristica utile.

Qualcuno ha una soluzione alternativa? Esiste un modo per utilizzare le credenziali utente di Instagram invece delle credenziali dell'applicazione? Dovrò ricorrere al sondaggio periodico del feed sulla posizione e abbandonare le mie aspirazioni in tempo reale?

risposta

0

risposte alle vostre domande:

c'è web-API per qualche soluzione alternativa: cronjobs aggiornare tutti i links e scrivere dati analizzati al database. Vantaggi: non è necessario API applications. Aspetti negativi: a volte modifiche all'API web (richieste e/o risposte).

È anche possibile registrare l'applicazione per ogni client in automatico, aggiungerli a DB, sottoscrivere aggiornamenti in tempo reale. E poi ottenere aggiornamenti.

Non ci sono modi per utilizzare access-token anziché CLIENT-ID e CLIENT-SECRET.

Basta ricordare, che non è "Real-time" photo updates (sistema di bilanciamento, ecc) davvero real-time (da documentazione: You should build your system to accept multiple update objects per payload) in modo 1 minutes aggiornamenti è sufficiente.

UPD

Forse aiutare, forse si conosce già questo modo grigio per accelerare.

È possibile utilizzare il collegamento diretto per ottenere i supporti in base alla posizione con web-API. È il più semplice Tutto ciò che serve è csrftoken dai cookie per generare XHR request. Csrftoken potrebbe provenire da utenti non autorizzati. Lo request in dettagli è visibile nella scheda Network di Google Chrome.

semplice esempio: POST query per https://instagram.com/query/ con i parametri q e ref (nell'esempio i loro valori sono urldecoded per spiegare):

q=ig_location(237630908){media.after(20000000000000000000000,2){nodes{id,display_src,thumbnail_src}}}&ref=locations::show 

Content-type dovrebbe essere application/x-www-form-urlencoded; charset=UTF-8.

Web-intestazioni per XHR request:

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 
Accept: */* 
Accept-Language: en-US;q=0.6,en;q=0.4 
Referer: https://instagram.com/explore/locations/237630908/ 
Origin: https://instagram.com 
X-Instagram-AJAX: 1 
X-Requested-With: XMLHttpRequest 
X-CSRFToken: e4e1e1eddd67b2b50b6d8ae7b49e01c0 
Cookie: csrftoken=e4e1e1eddd67b2b50b6d8ae7b49e01c0 
Content-type: application/x-www-form-urlencoded; charset=UTF-8 

(csrftoken nelle intestazioni esempio è casuale, non lo uso)

Non usare troppo spesso, Instagram disabilita qualche volta un po 'di web-function per IP, prova le modifiche csrftoken.

E una risposta è:

{ 
    status: "ok", 
    media: { 
     nodes: [ 
     { 
      thumbnail_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/s640x640/sh0.08/e35/c0.135.1080.1080/12142408_1499221190404489_557984803_n.jpg", 
      id: "1104470761628620590", 
      display_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/e35/12142408_1499221190404489_557984803_n.jpg" 
     }, 
     { 
      thumbnail_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/s640x640/sh0.08/e35/c0.135.1080.1080/12139611_1663826773904632_2063764196_n.jpg", 
      id: "1102282973026047789", 
      display_src: "https://scontent-frt3-1.cdninstagram.com/hphotos-xaf1/t51.2885-15/e35/12139611_1663826773904632_2063764196_n.jpg" 
     } 
     ] 
    } 
} 
+0

Grazie per le risposte CnapoB. Abbiamo già seguito il percorso di cron jobs ma questo è sfortunato dal momento che non è affatto vicino in tempo reale. Abbiamo pensato di registrare un'applicazione client per ciascun utente, ma dovremmo utilizzare decine di migliaia di app. Non riesco a immaginare che Instagram ci lascerebbe fare. E anche se lo facessero sembra che dovrei aggirare un captcha per farlo automaticamente. Grazie ancora. –

+0

Prego. Per favore, vedi UPD della risposta, potrebbe essere d'aiuto. – CnapoB

+0

@ TonyBathgate Ho dimenticato la menzione. Scusate. Per favore, vedi UPD della risposta, potrebbe essere d'aiuto. – CnapoB