Autenticação oAuth2.0 Google Workspace| 4Beginners 👶| Parte I

Rudda Beltrao
6 min readFeb 19, 2022

--

Com toda certeza, o Google Workspace é uma excelente solução que facilita o fluxo de trabalho nas organizações. Quem nunca usou o Gmail, Drive, Photos, Sheets, Docs etc.

De maneira abrangente, a maioria dos usuários já estão fidelizados a essas ferramentas e isso não é indiferente nas organizações. O Objetivo desse artigo é mostrar a praticidade de usar esses recursos, respeitando os níveis de integridade e privacidade oferecidos pelo protocolo oAuth2.0 no contexto de desenvolvimento android. Uma vez aplicado, as possibilidades são animadoras, seja para automatização de processos ou compartilhamento de informação e recursos.

Esse artigo, é dividido em duas partes, e mostrarei o passo-a-passo da criação de uma aplicação que realiza a leitura e escrita em tabelas no Google Sheets. Com ênfase nas regras de privacidade lastreada pelo Google Workspace. A priori os conceitos de oAuth, e demais pré-requisitos serão mostrados na Parte I, enquanto que o desenvolvimento na Parte II desse post. Então, se você já está familiarizado com esses conceitos, recomendo que pule para a Parte II , caso contrario, Boa Leitura ! :)

Afinal, o que é oAuth ?

oAuth é um protocolo de autenticação que permite que aplicações acessem recursos de outras aplicações, achou complicado ? Talvez a imagem abaixo te ajude!

Você provavelmente já clicou em algum botão que deu acesso a recursos para outra aplicação acessar. Tal qual já fez login com facebook ou sua conta google em outras aplicações… Bom fazer login é um começo, mas não é exatamente aplicado oAuth, mas acredito ser o mais didático para o momento. Quando você realizou login, certamente concedeu informações como nome, email e idade. Viu ? deu acesso a informação…

Esse tipo de autenticação é porta de entrada pra acesso a recursos e, no papel de desenvolvedor, são bastante práticos, tanto no ponto de vista de criativo quanto na experiência do usuário.

oAuth para Dispositivos Móveis

Bom, como desenvolvedor, é evidente que existem vários cenários que se faz necessário essa autenticação, e para dispositivos móveis, temos o seguinte diagrama de caso de uso, confome ilustra a imagem abaixo.

Se você não esta acostumado com esse tipo de diagrama, deixe-me ajudar. Bom, o objetivo é conseguir um token de acesso então precisamos solicitá-lo (Request Token) 😜 . Para isso precisamos que nossos usuários sinalizem quem são e concedam acesso a recursos, nesse casos as tabelas (Google Sheets).

Bom, sinalizar quem são já deve ser tarefa comum né não ? 😌
Geralmente uma tela de login, como mostra a primeira imagem. E como conceder acesso a recursos ? Bom é boa prática mostrar quais recursos vamos precisar, para então conseguir a permissão preciosa do usuário, assim como a revogação dessa permissão, caso o usuário ache necessário. Imagino que implementar tudo isso do zero seria uma tarefa terrivelmente infernal. Glória aos deuses, seja qual for o seu, existe o Google, e dois principais players de autenticação: Firebase e Google Sign-In.

📔Então anota aí, primeiro passo: Realizar login e pedir acesso a recursos. Pra esse passo, vamos usar essa documentação: Comece a integrar o Google Sign-In em seu aplicativo Android.

Como nem tudo são flores, precisamos registrar nossa aplicação no Google Developers Console, nada de outro mundo. Mas ja é necessário ter em mente o package name e chave SHA-1 do app. Um ponto interessante que é possivel registrar diversas chaves SHA-1. Por exemplo, uma para modo de desenvolvimento, outra para produção ( quando seu app esta na loja ), outra para outro desenvolvedor, etc. Você é o patrão!! 👊 💥

E o que é o Google Developers Console? De forma simples, é uma plataforma de administração de APIs. Por exemplo, se você precisa usar o Google Maps, ou Google Sheets, ou Googles Docs. Enfim, é necessario registrar esse uso no console, pela razão que há um ecosistema inteiro de Google APIs, e muitas delas exigem cota de uso e pagamento se necessário, para isso o Google Developers Console Existe 👍

Registrando seu Aplicativo no API Console 😍

Como disse antes, isso não é nada de outro mundo, seguindo a documentação, se você ja tem login no console, basta preencher uma caixa de diálogo com algumas informações: Nome do Projeto, Nome do Produto, package name e chave SHA-1 igual a imagem abaixo:

E afinal, o que é essa chave SHA-1 ? 😕

Bom se você pesquisar no Google vai encontrar algo similar a isso:

“ SHA1, MD5, and SHA-256 are cryptographic functions that will convert your input to 160 bit (20 bytes) value”

Traduzindo… É uma chave criptografada, ou seja, codificada pra ser bem dificil de ler e serve como identificação. No nosso caso, passa a seguinte diálogo:

Seu aplicativo: “Google, por favor, faça o login do meu usuario! ”
Google: “Até faço, mas quem é você mesmo ?”
Seu aplicativo: “Poxa Google, ta aí minha chave, assinado por mim e tudo mais”
Google: “Opa! tudo certinho viu, agora que percebi que é você mesmo, já estou realizando sua solicitação”

Tá, Agora que Entendi pra que serve, Como eu Gero Minha Chave SHA-1 ? 👂

Bom, há algumas alternativas para gerar chaves e por padrão toda aplicação ja é assinada com a chave debug.keystore e você pode usá-la sem nenhum problema. Mas devo avisar que voce DEVE criar sua própria chave de assinatura quando for publicar seu aplicativo e refazer os passos a seguir para essa chave.
Continuando …
Para encontrar a chave debug.keystore, basta acessar a pasta oculta .android que fica dentro da sua pasta HOME, no meu caso, como eu uso ubuntu, fica no seguinte diretorio:

/home/rudda/.android

Uma vez encontrada, agora você precisa rodar o seguinte comando:

keytool -keystore debug.keystore -list -v

Em seguida, é solicitado uma senha, que por padrão é: android
A saída no terminal mostra diversas informações, a mais valiosa é o SHA-1 que é o codigo que precisamos por hora.

Algo deu errado ? de onde veio esse keytool ? 😿

Keep Calm!! se deu errado deve ser porque deve estar faltando alguma configuração para reconhecer o comando keytool, e esse não é o objetivo desse artigo, ao invés disso, vamos usar o android studio para visualizar o SHA-1 da nossa aplicação de um jeito mais descolado 😝

Abra o Android Studio, clique na aba gradle e procure pela tarefa signinReport.

A saída dessa tarefa é exibida na aba RUN (1) e você terá a chave exibida (2)

Dito isto, você está apto para registrar sua aplicação no API Console !! 🥳🥳 — Caso queira criar sua própria chave SHA-1, o que eu super recomendo, por favor visite esse post “ Criando chaves SHA-1 para sua aplicação android” que contém mais detalhes a respeito do assunto.

Google API Console

  • identificando scopes
  • tela de consertimento
  • cadastrando email de testers
  • client_id, client secret

Referências 📚

--

--