DEV Community

Cover image for React Native - Google Login
Emerson Vieira
Emerson Vieira

Posted on • Edited on

6 2

React Native - Google Login

Login Google com React Native

OBS: Este tutorial engloba apenas projetos a partir da versão 0.60 do RN(React Native) e o Android.

Oi! Eu decidi escrever este post por motivos de ter apanhado um pouco para configurar e fazer funcionar essa feature no projeto do trabalho. Espero realmente que este post te ajude a não perder tempo e nem paciência.
Primeiramente temos que adicionar as dependências necessárias. Vamos por partes. A primeira dependência a ser adicionada é o do Firebase para RN
com o comando abaixo:

$ yarn  add @react-native-firebase/app
Enter fullscreen mode Exit fullscreen mode

A segunda dependência a ser adicionada ao projeto é referente ao módulo Firebase Auth para RN . Adicione com o comando abaixo:

$ yarn  add @react-native-firebase/auth
Enter fullscreen mode Exit fullscreen mode

Na página do módulo Auth, há uma uma parte que se refere a Social Auth, onde é mostrado como fazer login usando Facebook, Twitter e Google. O foco deste post é o login usando o Google. Na mesma página, onde se refere o login com Google, eles indicam o uso de uma outra lib para facilitar o login. A lib é react-native-google-signin. Adicione a mesma usando o comando abaixo:

$ yarn add @react-native-community/google-signin
Enter fullscreen mode Exit fullscreen mode

A partir daqui, se você rebuildar e tentar rodar seu projeto, ele não vai abrir, pois precisamos configurar algumas coisinhas para que a lib(google-signin) funcione direitinho.

Antes de tudo, você precisa fazer o link da lib, pois ainda não funciona com autolink. Faça o link usando o comando abaixo:

$ react-native link @react-native-community/google-signin
Enter fullscreen mode Exit fullscreen mode

Precisamos acessar a pasta android e abrir o arquivo build.gradle
Alt Text
precisamos adicionar googlePlayServicesAuthVersion = "17.0.0" e classpath("com.google.gms:google-services:4.3.2") como mostra na imagem.

Acesse a pasta app dentro da pasta android e abra o arquivo build.gradle
Alt Text

agora adicione
implementation 'androidx.appcompat:appcompat:1.1.0-rc01' e
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
como mostra a imagem.

Agora você precisar abrir seu projeto android com o Android Studio e abra a aba do gradle.
Alt Text
em seguida, deve selecionar app/Tasks/android/signingReport
Alt Text

clique duas vezes em signingReport e após executado, role o resultado até encontrar a Task app:signingReport e Variant: debugUnitest. Abaixo a imagem do resultado

Alt Text

copie/salve a chave de SHA1 para os próximos passos.

Acesse o console do seu firebase e se já tiver um projeto, basta acessar o mesmo e na página inicial dele, clicar em adicionar app e selecionar android, feito isso, vai abrir uma página para você registrar seu app.

Alt Text
você precisa ter em mãos o nome do pacote do app e a chave SHA1 e colocar nos respectivos campos como na imagem acima. Após preencher os campos, basta registrar o app.

Agora precisa acessar o site e rolar um pouco a página até aparecer o botão Configure a project.

Alt Text

Selecione seu projeto

Alt Text

Selecione Android e clique em CREATE
Alt Text

Agora preencha os campos com o nome do pacote e com a sua chave SHA1 e clique em CREATE

Alt Text

Na imagem seguir, é dado seu client id e chave secreta, vão ser necessários para os passos seguintes. Salve-os!!!

Alt Text

Volte a página inicial de seu projeto no firebase, clique em Authentication no menu ao lado.

Alt Text

Clique em configuração do SDK da Web e adicione seu client id e chave secreta, agora clique em salvar.

Alt Text

Agora acesse as configurações do seu projeto, como mostra a imagem a seguir.
Alt Text

Agora, em Apps para Android, selecione seu app e baixe seu arquivo google-services.json

Alt Text

adicione este arquivo na pasta app que fica dentro da pasta android. Feito isto, rebuild seu projeto e inicie-o. Seu app estará configurado para fazer login Google.

Projeto Exemplo

Espero que não tenha ficado confuso. Até a próxima ;)

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (8)

Collapse
 
imjvictor98 profile image
João Victor

O post ficou muito legal, me ajudou bastante. Mas para quem teve problema de merge ao fazer build do projeto como eu, basta ir no android/app/build.grade e adicionar uma flag em debug e release:

debug {
multiDexEnabled true
}
release {
multiDexEnabled true
}

Collapse
 
mensonones profile image
Emerson Vieira

Muito bom saber que o post foi útil pra ti, João. 😁

Collapse
 
danielcnascimento profile image
danielcnascimento

Gostei do post, muito útil, mas queria saber se a API do google e demais dependências estão estáveis para esse passo a passo hoje.
tentei acessar os links, mas nenhum deles funcionam, creio que o post merece uma pequena atualização. forte abraço ! Grato pela ajuda amigo.

Collapse
 
mensonones profile image
Emerson Vieira

links atualizados, Daniel :) obg pelo feedback

Collapse
 
pabloprota profile image
Pablo

Qual foi a fonte da pesquisa?

Collapse
 
mensonones profile image
Emerson Vieira

Oi, Pablo. Basicamente a doc da Google relacionado a auth do firebase e da lib usada para login usando Google e de resto foi quebrando cabeça mesmo.

Collapse
 
narvelan profile image
Insta: @narvelan • Edited

Obrigado pelo tutorial, estou aprendendo a programar para o android, tenho um site no qual o usuário se cadastra e faz login pelo google auth, e quero fazer um app que se conect usando o mesmo método

Collapse
 
mensonones profile image
Emerson Vieira

Obrigado e espero que realmente te ajude :D qualquer dúvida sobre o post é só comentar.

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay