Passa da ClientLogin a OAuth 2.0

Ikai lan, YouTube Developer Relations – June 2013

Le API di YouTube utilizzano OAuth 2.0 per autorizzare le richieste degli utenti. Ci viene chiesto spesso se in futuro aggiungeremo il supporto per l'autenticazione ClientLogin o altro ancora nelle API di YouTube. Tuttavia, abbiamo ufficialmente ritirato ClientLogin a partire dal 20 aprile 2012 e non abbiamo in programma di aggiungere questo meccanismo.

Esistono molti motivi per cui riteniamo che il supporto di vari flussi di autorizzazione OAuth 2.0 sia migliore per gli utenti di YouTube rispetto a ClientLogin. Questi flussi supportano i casi d'uso per le applicazioni desktop, le applicazioni solo web, le applicazioni native per dispositivi mobili e persino le applicazioni eseguite su dispositivi come i televisori che non hanno meccanismi di immissione sofisticati, cosa che è difficile da utilizzare con ClientLogin. Inoltre, abbiamo riscontrato che ClientLogin causa più problemi dopo il lancio per molti sviluppatori, alcuni dei quali vengono descritti nel post del blog ClientLogin #FAIL.

Utilizzare OAuth 2.0 per gli script lato server autonomi

Molti sviluppatori utilizzano ClientLogin per autorizzare script della riga di comando che vengono eseguiti sui server senza un browser. Con OAuth 2.0 ci sarà quasi sempre un browser coinvolto, ad eccezione del fatto che tu stia lavorando su un'applicazione Android che utilizza Google Play Services per recuperare i token tramite GoogleAuthUtil.

In un flusso solo web, un sito web che vuole effettuare chiamate API autenticate per conto di un utente deve reindirizzarlo a una pagina di autenticazione google.com che spiega a cosa sta tentando di accedere l'applicazione. L'applicazione web riceve quindi un token, che viene utilizzato per effettuare chiamate API. L'utente può quindi revocare l'accesso dell'applicazione in qualsiasi momento utilizzando la pagina connected apps and sites.

I nostri esempi di codice Python mostrano come gli script a riga di comando possono avviare un browser ed effettuare chiamate API da una finestra del terminale, creare un server locale per ascoltare il codice dopo il reindirizzamento dell'autorizzazione e salvare automaticamente un token per le future chiamate API. Ecco un video in azione:

Il token utilizzato è una stringa ASCII. Se è un token offline, è portatile. Utilizzando il token recuperato, potrai eseguire lo script sul desktop, quindi copiare e utilizzare il codice su un server remoto senza GUI, a condizione che il codice crei un'istanza di un client OAuth 2.0 con lo stesso ID client e lo stesso secret. Oltre a Python, le librerie client delle API di Google per altri linguaggi di programmazione offrono anche metodi helper per la gestione dei token, che possono essere condivisi tra client e anche utilizzati nelle librerie HTTP di livello inferiore direttamente nell'intestazione di un client o come parametro URL.

Alcuni esempi di script lato server che utilizzano token offline:

  • Un daemon che monitora una directory per il caricamento automatico dei nuovi video su YouTube
  • Un cron job che aggiorna le playlist ogni giorno con nuovi contenuti
  • Uno script che monitora i dati video tramite l'API YouTube Analytics e avvisa i gestori del canale quando si verificano determinati eventi, ad esempio un tempo di visualizzazione complessivo che supera un limite. Tieni presente che in questo caso, OAuth 2.0 è l'unico metodo di autorizzazione supportato perché l'API di Analytics non supporta ClientLogin.

La sezione sui token di accesso di lunga durata fornisce ulteriori dettagli su come generare i token offline che possono essere utilizzati per i processi lato server.

Best practice per ID client e client secret

Qualsiasi codice che condivide lo stesso ID client e la stessa coppia di secret può utilizzare gli stessi token di accesso. È preferibile limitare l'accesso all'ID client e ai client secret al codice che viene eseguito su macchine e dispositivi all'interno della tua organizzazione.

Non includere il tuo ID client e il client secret nel codice delle applicazioni mobile native. Tutti gli sviluppatori che eseguono l'autenticazione OAuth 2.0 da un dispositivo mobile devono utilizzare l'ID client "Applicazione installata", che richiede informazioni aggiuntive per verificare che la richiesta provenga solo da un'applicazione rilasciata dal tuo team.

Sui dispositivi Android, invece di utilizzare un ID client e un client secret, la tua applicazione viene identificata utilizzando una combinazione di nome del pacchetto e hash del certificato di firma. Sui dispositivi iOS vengono utilizzati l'ID bundle e l'ID App Store. La documentazione ufficiale sul recupero di queste informazioni è disponibile nella pagina della guida di Google API Console.

Gli account di servizio non funzionano con l'API di YouTube

Gli account di servizio non funzionano per le chiamate API di YouTube Data perché gli account di servizio richiedono un canale YouTube associato e non è possibile associare canali nuovi o esistenti agli account di servizio. Se utilizzi un account di servizio per chiamare l'API YouTube Data, il server API restituisce un errore con il tipo di errore impostato su unauthorized e il motivo impostato su youtubeSignupRequired.

Accesso offline/di lunga durata all'API di YouTube

OAuth 2.0 dispone di token di breve durata e token di lunga durata. Per le operazioni singole, i token di accesso di breve durata sono l'opzione migliore. Questi token scadono poco dopo la concessione. Per i job a lunga esecuzione potresti voler acquisire un token di aggiornamento, che viene usato per recuperare token di accesso di breve durata.

Per assicurarti che la tua applicazione riceva un token di aggiornamento longevi e non un token di accesso di breve durata, utilizza il flusso "Applicazione installata" durante la creazione di un ID client e seleziona Other come valore "Tipo di applicazione installata":

Ti consigliamo di utilizzare il flusso "Applicazione installata" per questo caso d'uso. Se hai bisogno di un accesso di lunga durata all'API di YouTube in un'applicazione web, puoi recuperarla impostando il parametro access_type su offline e il parametro approval_prompt su force nella richiesta di autorizzazione iniziale o nella configurazione client. Alcune librerie client gestiranno il recupero e l'aggiornamento dei token di accesso. Se ti interessa scrivere il tuo codice di autorizzazione personalizzato, abbiamo pubblicato un post del blog sul blog di Google Code che puoi utilizzare come base per il codice.

Utilizzo di OAuth 2.0 con telefoni, tablet e altri dispositivi

Gli sviluppatori di app per Android possono usare Google Play services per gestire i dettagli delle autorizzazioni. Google Play Services offre un flusso di autorizzazione standard per tutte le API di Google, incluse le API per la piattaforma YouTube. Questo approccio offrirà agli utenti della tua applicazione Android un'esperienza di gran lunga superiore rispetto a un'autenticazione personalizzata mediante ClientLogin.

Sui dispositivi iOS, Google offre due opzioni:

OAuth 2.0 per dispositivi è l'approccio preferito per i dispositivi che hanno lo scopo di fungere da dispositivi di tipo "secondo schermo", ad esempio televisori senza meccanismi di immissione facili da usare. OAuth 2.0 per dispositivi funziona presentando un codice univoco per l'utente quando è richiesta una richiesta di autorizzazione. A questo punto, agli utenti viene chiesto di accedere a http://google.com/device su un altro dispositivo, ad esempio un laptop o un telefono, e di inserire il codice univoco. L'applicazione presenta una schermata simile alla seguente:

Mentre l'utente inserisce il codice su un altro dispositivo, l'applicazione esegue periodicamente dei sondaggi per verificare se il codice è stato inserito. Una volta trovato, recupera un token per le chiamate API. Per vedere come funziona, dai un'occhiata alla demo, che può essere eseguita su qualsiasi dispositivo abilitato per il Web. L'API stessa è indipendente dalla piattaforma, il che la rende utile per i dispositivi che non hanno funzionalità di rendering web. Abbiamo pubblicato il codice di esempio in Python per la demo da utilizzare come riferimento.

Riepilogo

L'autorizzazione OAuth 2.0 offre flessibilità agli sviluppatori che richiedono l'autorizzazione per YouTube. Gli sviluppatori che hanno familiarità con ClientLogin potrebbero riscontrare che la configurazione delle applicazioni per l'uso di OAuth 2.0 richiede un po' di lavoro in più per iniziare, ma una volta trasferite, le applicazioni OAuth 2.0 offrono agli utenti finali maggiore flessibilità, sicurezza e usabilità su più piattaforme.

Se hai altre domande su OAuth 2.0 o su alcuni esempi in questo articolo, contatta il tag youtube-api su StackOverflow.