Ikai Lan, YouTube Developer Relations – June 2013
As APIs do YouTube usam o OAuth 2.0 para autorizar solicitações de usuários. Muitas vezes, nos perguntam se vamos adicionar suporte para autenticação ClientLogin ou algo semelhante nas APIs do YouTube. No entanto, descontinuamos oficialmente o ClientLogin em 20 de abril de 2012, e não há planos de adicionar esse mecanismo.
Há vários motivos para acreditarmos que oferecer suporte a vários fluxos de autorização do OAuth 2.0 é melhor para os usuários do YouTube do que ClientLogin. Esses fluxos oferecem suporte a casos de uso para aplicativos de computador, somente da Web, para dispositivos móveis e até mesmo aplicativos executados em dispositivos como televisores que não têm mecanismos de entrada sofisticados, algo difícil de fazer usando ClientLogin. Além disso, descobrimos que ClientLogin causa mais problemas para muitos desenvolvedores após o lançamento.
Uso de scripts autônomos do OAuth 2.0 para servidor
Muitos desenvolvedores usam o ClientLogin para autorizar scripts de linha de comando executados em servidores sem um navegador. Com o OAuth 2.0, quase sempre há um navegador envolvido, exceto quando você está trabalhando em um app Android que usa Google Play Services para buscar tokens via GoogleAuthUtil..
Em um fluxo somente da Web, um site que quer fazer chamadas de API autenticadas em nome de um usuário precisa redirecionar o usuário para uma página de autenticação google.com que explica o que o aplicativo está tentando acessar. Em seguida, o aplicativo da Web recebe um token, usado para fazer chamadas de API. O usuário pode revogar o acesso do aplicativo a qualquer momento usando a página connected apps and sites.
Nossas amostras de código Python demonstram como scripts de linha de comando podem iniciar um navegador e fazer chamadas de API em uma janela de terminal, criar um servidor local para detectar o código após o redirecionamento de autorização e salvar automaticamente um token para futuras chamadas de API. Você encontra um vídeo disso em ação abaixo:
O token usado é uma string ASCII. Se for um token offline, ele será portátil. Usando o token recuperado, é possível executar o script no computador, copiar e usar o código em um servidor remoto sem uma GUI, desde que o código crie uma instância de um cliente OAuth 2.0 com o mesmo ID e chave secreta do cliente. Além do Python, as bibliotecas de cliente das APIs do Google para outras linguagens de programação também oferecem métodos auxiliares para gerenciar tokens, que podem ser compartilhados entre clientes e até mesmo usados diretamente em bibliotecas HTTP de nível inferior em um cabeçalho de cliente ou como um parâmetro de URL.
Alguns exemplos de scripts do lado do servidor que usam tokens off-line:
- Um daemon que monitora um diretório para novos vídeos para fazer upload automaticamente para o YouTube
- Um cron job que atualiza as playlists diariamente com novos conteúdos
- Um script que monitora dados de vídeo através da API do YouTube Analytics e notifica os gerentes de canal quando determinados eventos ocorrem, como o tempo de exibição agregado superior a um limite. Observe que, neste caso, OAuth 2.0 é o único método de autorização suportado porque a API do Analytics não suporta o ClientLogin.
A seção sobre tokens de acesso de longa duração fornece mais detalhes sobre como gerar os tokens off-line que podem ser usados para processos do lado do servidor.
Práticas recomendadas para ID e chave secreta do cliente
Qualquer código que compartilha o mesmo ID do cliente e par secreto pode usar os mesmos tokens de acesso. É melhor restringir o acesso ao ID do cliente e aos segredos do cliente para o código que é executado em máquinas e dispositivos em sua organização.
Não inclua o ID e a chave secreta do cliente como parte do código dos seus aplicativos móveis nativos. Todos os desenvolvedores que fazem a autenticação com o OAuth 2.0 a partir de um dispositivo móvel devem fazer uso do ID do cliente do "Aplicativo instalado", que solicita informações adicionais para verificar se a solicitação está vindo apenas de um aplicativo lançado por sua equipe.

Em dispositivos Android, em vez de usar um ID e uma chave secreta do cliente, seu aplicativo é identificado usando uma combinação do nome do pacote e um hash de certificado de assinatura. Em dispositivos iOS, são usados o ID do pacote e o ID da app store. A documentação oficial sobre como recuperar essas informações pode ser encontrada na página de ajuda do Google Cloud console.
Contas de serviços não funcionam com a API do YouTube
As contas de serviço não funcionam para chamadas da API YouTube Data porque exigem um canal do YouTube associado, e não é possível associar canais novos ou atuais a contas de serviço. Se você usar uma conta de serviço para chamar a API YouTube Data, o servidor da API retornará um erro com o tipo de erro definido como unauthorized e o motivo definido como youtubeSignupRequired.
Acesso off-line/longa duração para a API do YouTube
O OAuth 2.0 possui tokens de curta e longa duração. Para operações pontuais, os tokens de acesso de curta duração são a melhor opção. Esses tokens expiram logo depois de serem concedidos. Para jobs de longa duração, talvez seja interessante adquirir um token de atualização, que é usado para buscar tokens de acesso de curta duração.
Para garantir que seu aplicativo receba um token de atualização de longa duração e não um token de acesso de curta duração, use o fluxo "Aplicativo instalado" ao criar um ID do cliente e selecione Other para o valor "Tipo de aplicativo instalado":

É recomendado que você use o fluxo "Aplicativo instalado" para este caso de uso. Se você precisar de acesso de longa duração à API do YouTube em um aplicativo da Web, defina o parâmetro access_type como offline e o parâmetro approval_prompt como force na solicitação de autorização inicial ou na configuração do cliente. Algumas bibliotecas de cliente irão gerenciar a busca e atualização de tokens de acesso de atualização. Se você quiser escrever seu próprio código de autorização personalizado, publicamos uma postagem no blog do Google Code que pode ser usada como base para seu código.
Uso do OAuth 2.0 com telefones, tablets e outros dispositivos
Ao escrever aplicativos Android, os desenvolvedores podem aproveitar o Google Play services para processar os detalhes de autorização. O Google Play Services oferece um fluxo de autorização padrão para todas as APIs do Google, incluindo as APIs da plataforma do YouTube. Essa abordagem oferece uma experiência do usuário muito melhor para os usuários do seu app Android do que uma autenticação personalizada usando ClientLogin.

Em dispositivos iOS, o Google oferece duas opções:
- o Google+ Platform for iOS, que integra o login para produtos do Google e também ativa recursos sociais
- o gtm-oauth2 toolkit, que fornece uma UIWebView de autorização e gerencia tokens.
Para dispositivos que atuam como dispositivos de "segunda tela" ou dispositivos como TVs sem mecanismos de entrada fáceis de usar, o OAuth 2.0 para dispositivos é a abordagem preferida. O OAuth 2.0 para dispositivos funciona através da apresentação de um código exclusivo para um usuário quando uma solicitação de autorização é necessária. Nesse momento, os usuários precisam acessar http://google.com/device em outro dispositivo, como um notebook ou smartphone, e inserir o código exclusivo. O aplicativo exibe uma tela parecida com esta:

Enquanto o usuário está digitando o código em outro dispositivo, o aplicativo monitora periodicamente para ver se o código foi inserido. Depois de inserido, ele recupera um token para fazer chamadas de API. Para ver isso em ação, confira o demo, que pode ser executado em qualquer dispositivo habilitado para Web. A API em si é independente de plataforma, o que a torna útil para dispositivos que não possuem recursos de renderização na Web. Postamos um exemplo de código em Python para a demonstração, que pode ser usado como referência.
Resumo
A autorização com o OAuth 2.0 fornece flexibilidade para desenvolvedores que requerem autorização do YouTube. Os desenvolvedores familiarizados com ClientLogin podem achar que a configuração dos aplicativos para usar o OAuth 2.0 exige um pouco mais de trabalho para começar. No entanto, depois de portados, os aplicativos OAuth 2.0 oferecem mais flexibilidade, segurança e usabilidade em várias plataformas para os usuários finais.
Se tiver mais dúvidas sobre o OAuth 2.0 ou qualquer um dos exemplos neste artigo, faça uma pergunta com a tag youtube-api no StackOverflow.