Ikai Lan, YouTube Developer Relations – June 2013
As APIs do YouTube usam o OAuth 2.0 para autorizar solicitações de usuários. Muitas pessoas perguntam se vamos adicionar suporte à autenticação ClientLogin ou algo semelhante nas APIs do YouTube. No entanto, o ClientLogin foi oficialmente descontinuado em 20 de abril de 2012, e não há planos para adicionar esse mecanismo.
Há vários motivos pelos quais acreditamos 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, aplicativos somente para Web, aplicativos nativos para dispositivos móveis e até mesmo aplicativos executados em dispositivos como TVs que não têm mecanismos de entrada sofisticados, algo difícil de fazer usando ClientLogin. Além disso, descobrimos que o ClientLogin causa mais problemas após o lançamento para muitos desenvolvedores, alguns dos quais descrevemos na nossa postagem do blog, ClientLogin #FAIL.
Uso de scripts autônomos do OAuth 2.0 para servidor
Muitos desenvolvedores usam ClientLogin para autorizar scripts de linha de comando executados em servidores sem um navegador. Com o OAuth 2.0, quase sempre haverá um navegador envolvido, exceto quando você estiver trabalhando em um aplicativo Android que usa Google Play Services para buscar tokens por 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 explique 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.
Nossos exemplos de código Python demonstram como os 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, você poderá executar o script em seu desktop e, em seguida, copiar e usar o código em um servidor remoto sem uma GUI, desde que o código instancie um cliente OAuth 2.0 com o mesmo ID e o mesmo segredo 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é usados em bibliotecas HTTP de nível inferior diretamente 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
- Uma tarefa cron que atualiza listas de reprodução 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 os processos do lado do servidor.
ID do cliente e práticas secretas recomendadas ao 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 seu ID de cliente e segredo do cliente como parte de seu código de aplicativo móvel nativo. 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 do cliente e o segredo do cliente, o aplicativo é identificado com uma combinação do nome do pacote e um hash de certificado de assinatura. Em dispositivos iOS, são usados o ID pacote e o ID da loja do aplicativo. A documentação oficial sobre como recuperar essas informações pode ser encontrada na página de ajuda Google API 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 elas exigem um canal do YouTube associado, e não é possível associar canais novos ou existentes a contas de serviço. Se você usar uma conta de serviço para chamar a API Data do YouTube, o servidor da API vai 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, é recomendável adquirir um token de atualização, que é usado para buscar tokens de acesso de curta duração.
Para garantir que o 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 "App instalado" ao criar um ID do cliente e selecione Other
como o valor de "Tipo de app 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, poderá extrair um token definindo 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.
Uso do OAuth 2.0 com telefones, tablets e outros dispositivos
Ao criar apps 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 YouTube. Essa abordagem vai oferecer uma experiência muito melhor aos 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 ponto, os usuários precisam acessar http://google.com/device em outro dispositivo, como um laptop 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 que a demonstração seja usada como referência.
Resumo
A autorização com o OAuth 2.0 fornece flexibilidade para desenvolvedores que requerem autorização do YouTube. Os desenvolvedores que já conhecem o ClientLogin podem achar que a configuração dos aplicativos para usar o OAuth 2.0 exige um pouco mais de trabalho para começar, mas, depois de portar, os aplicativos OAuth 2.0 oferecem mais flexibilidade, segurança e usabilidade em várias plataformas para os usuários finais.
Se você tiver mais dúvidas sobre o OAuth 2.0 ou algum dos exemplos deste artigo, use a tag youtube-api no StackOverflow.