2016-06-01 18 views
6

stavo usando il seguente api per ottenere gli ultimi 3 post di conti pubblici per mostrare sul sito:
Instagram API gettando OAuthAccessTokenException errore 400 tramite il client id

https://api.instagram.com/v1/users/{user-id}/media/recent/?client_id={client-id}&count=3 

mi aveva creato un app per ottenere il client -id.
Tuttavia da oggi, questa API ha iniziato lanciando la seguente eccezione:

{ 
    meta: { 
     error_type: "OAuthAccessTokenException", 
     code: 400, 
     error_message: "The access_token provided is invalid." 
    } 
} 

La prego di farmi sapere come come risolvere questo?

risposta

0

Per qualche motivo il token non è più valido. Richiedilo di nuovo.

possibili motivi per cui un token è più valida:

  • modificata Password
  • verificati conto
  • loggati da un paese diverso
13

In base alla data, probabilmente hanno un app più anziano che è stato colpito dalla migrazione API di oggi, come il mio. In breve, Instagram ha deciso di rendere più fastidioso lo sviluppo per la propria piattaforma richiedendo l'autenticazione di tutte le richieste API per utente, anche per i dati condivisi dagli utenti. Quindi tu (come me) probabilmente ridicherai completamente la tua app.

Per comunicare, accedere a instagram.com/developer e fare clic su Gestisci client; quindi premi modifica accanto al set di chiavi che stai cercando di utilizzare. Nella parte superiore, avrà una sezione chiamata 'Stato client' - se la tua legge 'Modalità sandbox', tempi di divertimento in anticipo! Spero che tu interagisca con meno di 10 utenti e che tu possa rimanere in modalità sandbox, altrimenti dovrai scrivere un tema, filmare un video e in fondo difendere i tuoi permessi (probabilmente tra qualche mese, quando alcuni stagisti di Instagram finalmente scavano la sua strada fino a te nella pila di applicazioni). Se legge qualcosa di diverso, hai già un altro problema e dovresti ringraziare le tue stelle fortunate.

Nel frattempo, credo che tornerò a inviare dozzine di e-mail ai responsabili dei nostri numerosi account affiliati di Instagram per spiegare il problema e provare a ottenere le autorizzazioni, quindi a condizione che vengano approvati da allora, tutti i nostri schermi dei social media non sono rotti durante un grande evento Sabato. Un'altra opzione potrebbe essere quella di utilizzare la risposta JSON senza OAuth available here, ma ciò potrebbe interrompere i termini di servizio.

+1

Sigh .. sembra che anche la modalità sandbox sia bloccata./user/endpoint sembra funzionare ma le chiamate come/v1/tags/selfies/media/recenti? access_token = XXXX non restituiscono alcun dato nonostante abbia lo scope corretto in posto (cioè public_content) –

+0

L'idea è di mostrare gli ultimi post da un account pubblico che appartiene al sito web in cui verrebbe mostrato. Stai dicendo che qui deve esserci un'autenticazione. Il sito web è pubblico e dovrebbe mostrare i post senza alcun intervento da parte dell'utente. Tutto questo funzionava fino a ieri da quando il sito web è stato lanciato l'anno scorso. – spal

+0

Sì, sfortunatamente è esattamente quello che sto dicendo. Anche se tali informazioni sono pubblicamente disponibili sul sito web di Instagram, hanno interrotto QUALSIASI accesso API ai dati dell'utente senza l'approvazione dell'utente (e l'approvazione da parte di Instagram per essere idoneo). Ho lo stesso identico comportamento con la mia applicazione; bene per letteralmente anni, completamente rotto ieri. –

3

Ho una soluzione a questo. Se si utilizza lo stesso codice che io sono, che sembra probabile. Stavo tirando le ultime due immagini usando questo.

https://api.instagram.com/v1/users/{user-id}/media/recent/?client_id={client-id}&count=3

Quello che ho fatto per ottenere questo lavoro è il seguente.

  1. Accedere all'account Instragram in uso come applicazione.

  2. Vai nell'area dello sviluppatore (API). https://www.instagram.com/developer/clients/manage/

  3. Gestione clienti. Assicurati che l'URL del tuo sito web sia uguale al tuo URL di reindirizzamento valido.
  4. Aggiungi nuovo utente Sandbox. Inserisci l'account delle foto IG che desideri raggiungere.
  5. Hit questo URL: https://api.instagram.com/oauth/authorize/?client_id=CLIENTID&redirect_uri=REDIRECT_URI&response_type=token dove l'ID cliente è lo stesso che hai usato nella tua precedente app sopra.
  6. Si dovrebbe tornare indietro e accedere all'URL del token. Copia il tuo token di accesso.
  7. Accedi come account di cui vuoi le foto IG. L'account che hai aggiunto come utente sandbox e vai allo sviluppatore e approva gli Inviti di Sandbox.
  8. Cambia l'URL originale sopra da https://api.instagram.com/v1/users/{user-id}/media/recent/?client_id={client-id}&count=3 a https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS_TOKEN con il token di accesso.

Questa è la IG API media documentazione endpoint: https://www.instagram.com/developer/endpoints/users/

Dopo di che, tutto ha funzionato per me e mentre ci si trova nella sandbox, si dovrebbe essere in grado di tirare gli ultimi 3 foto o, a questo punto , capire come leggere il JSON per farlo.

+0

Grazie, questo è stato perfetto per me. Per farlo funzionare avevo bisogno di modificare il mio client Instagram, andare alla scheda Sicurezza e deselezionare l'opzione "disabilita OAuth implicita". – gregdev

+0

Che cos'è "URL di reindirizzamento valido"? – user151841

Problemi correlati