2015-05-21 16 views
5

Sto usando il V3 Api di YouTube e qui c'è lo snippet di codice per estrarre i primi dieci video dal mio canale youtube. (Questa stessa query funziona perfettamente nella API Explorer google @https://developers.google.com/apis-explorer/)Errore v3 di YouTube v3 - 'Nessun filtro selezionato'

url_start = "https://www.googleapis.com/youtube/v3/videos?" + \ 
      "order=viewCount&part=snippet&forMine=true" + \ 
      "&type=video&maxResults=10&key=MY_API_KEY" 
data = requests.get(url_start).json() 

ma ottengo questo errore:

{u'error': {u'code': 400, 
      u'message': u'No filter selected.', 
      u'errors':[{u'locationType': u'parameter', 
         u'domain': u'youtube.parameter', 
         u'message': u'No filter selected.', 
         u'reason': u'missingRequiredParameter', 
         u'location': u''}]}} 

So che la chiave è valida, perché se posso fare la stessa query senza formine

https://www.googleapis.com/youtube/v3/search?part=snippet&key=MY_API_KEY 

E ottengo i migliori video in generale da YouTube. C'è un modo migliore per fare questo o una soluzione alternativa?

risposta

3

Il parametro forMine funziona solo per un utente autenticato (uno che ha attraversato il flusso di oAuth2 con l'app), quindi il parametro mancante di cui si è lamentato la richiesta è il token di accesso necessario.

Se il tuo obiettivo è quello di avere uno script privato in esecuzione che ti mostri i tuoi primi dieci video in un dato momento, puoi impostare una routine temporanea nella tua app che ti permetterà di autenticarti manualmente con oAuth2 e catturare l'aggiornamento gettone; se lo memorizzi, in seguito a richieste future il token di aggiornamento può ottenere un token di accesso senza che tu debba autorizzare a mano.

Se il tuo obiettivo è quello di creare un dashboard in modo che gli utenti possano vedere i loro primi dieci video, dovrai semplicemente collegare l'autenticazione oAuth2 al tuo flusso e inviare il token di accesso ad ogni richiesta. Lo gapi client per Python lo rende piuttosto semplice.

Se si desidera eseguire l'operazione senza il parametro forMine dell'elenco dei video, è possibile tornare all'endpoint di ricerca e passare l'ID del canale utente (è necessario conoscerlo in anticipo, ovviamente, mentre il metodo autenticato funziona per qualsiasi utente che accede in senza dover sapere chi sono):

https://www.googleapis.com/youtube/v3/search?order=viewCount&part=snippet&channelId={channel id here}&maxResults=25&key={YOUR_API_KEY} 
+0

l'obiettivo è il secondo, appena afferrando la top ten dal mio canale in qualsiasi momento con Python - non ho rendo conto che si deve ottenere un token di aggiornamento ora per effettuare query specifiche. questo è utile –

+0

Nota Ho modificato la mia risposta per elaborare un po '... puoi farlo senza alcun token SE conosci già l'ID del canale di un dato utente. Se non lo fai, dovrai usare oAuth. – jlmcdonald

+0

grazie @jlmcdonald che ha funzionato! Ho anche avuto l'ID canale errato - ma funziona bene senza il sovraccarico di ottenere e mantenere i token solo per dati semplici! –

Problemi correlati