Firebase Authentication M2M Parte 1

Esse artigo trata de como fazer a autenticação usando o Firebase Authentication porém entre duas máquinas, entre um Client e API, por exemplo.

Recentemente, surgiu a necessidade de desenvolver uma aplicação na qual um cliente precisaria acessar determinados endpoints de uma API. A abordagem mais comum e prática para esse tipo de cenário seria utilizar um client ID e um client secret, enviados via header, validados no backend e utilizados para gerar um token JWT responsável pela autorização das requisições.

O desafio, porém, foi implementar esse fluxo utilizando usuários do Firebase Authentication. Embora o Google Cloud Platform ofereça mecanismos de autenticação para seus próprios recursos, esses não se aplicam diretamente a aplicações customizadas. Diante dessa limitação, optei por construir uma solução própria, utilizando o Firebase Authentication em conjunto com o Firebase Realtime Database para viabilizar a autenticação entre cliente e API.

Continue reading →

Palestra interna Firebase/Orbia

No dia 2 de novembro, participei de um meetup interno promovido pela empresa onde trabalho, no qual tive a oportunidade de apresentar os recursos do Firebase e um pouco mais do GCP. Como atualmente utilizamos o Firebase Authentication como provedor de autenticação dos nossos usuários, surgiu o interesse em conhecer melhor essa ferramenta que já faz parte do nosso dia a dia.

Dessa forma, realizei uma palestra passando por cada um dos principais recursos que o Firebase oferece, demonstrando, de maneira prática, como cada um deles pode ser aplicado dentro da nossa organização.

Os principais destaques ficaram, naturalmente, para o Firebase Authentication*. Em especial, o recurso de login anônimo despertou bastante curiosidade, já que destaquei a possibilidade de começarmos a coletar informações sobre determinados usuários desde o primeiro acesso, oferecendo recomendações personalizadas e enviando dados ao Analytics — o que deixou o time de marketing bastante entusiasmado.

Falando em Analytics, essa foi outra ferramenta que agradou muito ao marketing, principalmente pela facilidade de integração com outros recursos do Firebase, o que promete simplificar bastante os processos do time.

A equipe de Dados se interessou especialmente pela possibilidade de exportação facilitada das informações para o BigQuery, algo que, em outras plataformas, não costuma ser tão simples.

Os desenvolvedores, eu confesso, já estavam conquistados. Ainda assim, aproveitei a palestra para comentar sobre o uso do Crashlytics, inclusive a possibilidade de utilizá-lo também em aplicações web, que virá em futuros releases do recurso, o que gerou uma reação bastante positiva.

O que posso dizer sobre esse trabalho que venho desenvolvendo é que, há alguns meses, a empresa estava prestes a sair completamente do GCP. Não teríamos mais nenhum projeto na Google Cloud. No entanto, com a adoção do Firebase Authentication, a integração do Firebase Realtime Database e a perspectiva de uso de outros recursos, hoje já contamos com três novos projetos criados para atender novas demandas.

Fico muito feliz por ver esse resultado e por ter conseguido transmitir a confiança necessária para que a empresa tomasse a decisão de não abandonar o ecossistema GCP/Firebase 💙

O próximo passo? Flutter, mas isso fica para o ano que vem. 😊

*Ele foi escolhido depois de pesquisarmos outros e avaliarmos os riscos, além do fator de conhecimento técnico envolvido, no caso eu tinha muito mais conhecimento do Firebase

Um Pouco Sobre Complexidade de Código

Volta e meia eu vejo em algumas redes algumas pessoas desenvolvedoras falando sobre, use isso, não use tal, e dizendo que devs juniors já deviam saber disso ou daquilo, porém normalmente isso tem relação a funções extendidas de javascript, python, etc.. mas poucos se atentam a uma questão que pode ser bem crítica, que é a complexidade do código gerado usando essas funções, e nesse artigo gostaria apenas de mostrar exemplos do que são e de pequenas implementações de algoritmos e diversos momentos de complexidade, a notação usada será a Big O
Espero que gostem 🙂

Primeiramente, o que é Big O?

Na ciência da computação, a notação Big O é uma notação matemática que descreve o comportamento limitante de uma função quando o argumento tende a um valor específico ou ao infinito. É membro de uma família maior de notações conhecida como notação Landau, notação Bachmann–Landau, ou notação assintótica.

A notação Big O é usada para classificar algoritmos de acordo com seu tempo de execução ou requisitos de espaço, conforme a entrada de dados aumenta.

Continue reading →

Firebase Databases Indexes

Realtime Database

Na Realtime Database do Firebase, os índices (indexes) desempenham um papel importante na otimização das consultas. Quando você executa uma consulta em sua base de dados, os índices ajudam a melhorar a eficiência da busca, permitindo que o Firebase recupere os dados de forma mais rápida.

Os índices na Realtime Database do Firebase são um mecanismo que permite que o Firebase armazene os dados de forma mais eficiente, facilitando a consulta e a recuperação dos dados.

Os índices são criados para campos específicos em um documento. Quando um índice é criado, o Firebase armazena uma lista de todos os valores possíveis para esse campo. Essa lista é organizada de forma ordenada, o que facilita a consulta dos dados.

Por exemplo, imagine que você tenha um documento no banco de dados com os seguintes dados:

Continue reading →

Google Developer Experts

Um Pouco Sobre o Programa Google Developer Experts

O Programa GDE (Google Developer Experts) é uma iniciativa do Google que reconhece e premia desenvolvedores experientes e especialistas em tecnologias específicas do ecossistema Google. Esses especialistas são selecionados com base em seu conhecimento profundo e contribuições significativas para a comunidade de desenvolvedores.

Os GDEs são profissionais altamente qualificados em áreas como desenvolvimento de software, design de interface do usuário, análise de dados, machine learning, internet das coisas (IoT) e muito mais. Eles demonstram habilidades excepcionais e um compromisso notável em compartilhar seu conhecimento e experiência com outros desenvolvedores.

Continue reading →

Um pouco sobre o IONIC framework

O Ionic é um framework de código aberto para o desenvolvimento de aplicativos móveis híbridos e progressivos(PWA). Ele permite criar aplicativos para várias plataformas, como iOS, Android e web, usando tecnologias web como HTML, CSS e JavaScript.

O IONIC utiliza o Capacitor como base para acessar os recursos nativos dos dispositivos, como câmera, GPS, contatos, etc. Além disso, o IONIC usa o TypeScript e o Angular para prover uma solução de mais alto nível em termos de código e arquitetura. O IONIC também possui uma interface de linha de comando (CLI) que facilita a criação, o gerenciamento e o teste dos aplicativos.

Principais recursos e benefícios do Ionic:

  1. Desenvolvimento multiplataforma: Com o Ionic, é possível criar aplicativos para várias plataformas, como iOS, Android e web, a partir de um único código-base. Isso economiza tempo e esforço, evitando a necessidade de desenvolver aplicativos separados para cada plataforma.
  2. Componentes estilizados: O Ionic possui uma biblioteca extensa de componentes de interface de usuário pré-construídos, como botões, listas, menus, abas, sliders e muito mais. Esses componentes são estilizados e prontos para uso, permitindo criar interfaces de usuário atraentes e consistentes em seus aplicativos.
  3. Facilidade de uso: O Ionic é projetado para ser fácil de usar, especialmente para desenvolvedores web que estão familiarizados com tecnologias como HTML, CSS e JavaScript. Ele utiliza conceitos familiares, como a criação de páginas e o uso de componentes, facilitando a transição para o desenvolvimento de aplicativos móveis.
  4. Integração com Angular: O Ionic é construído em cima do Angular, o que significa que você pode aproveitar os recursos poderosos do Angular para criar aplicativos mais robustos. Isso inclui recursos como gerenciamento de estado, injeção de dependência e a capacidade de criar componentes reutilizáveis.
  5. Acesso a recursos nativos: Com o Ionic, é possível acessar recursos nativos do dispositivo, como câmera, GPS, armazenamento local e notificações push, usando plugins específicos do Ionic ou do Capacitor (uma biblioteca de abstração para acessar recursos nativos).
  6. Comunidade e ecossistema: O Ionic possui uma comunidade ativa e um ecossistema robusto de plugins, temas e bibliotecas adicionais. Isso significa que você pode encontrar suporte, recursos adicionais e soluções para desafios comuns ao desenvolver aplicativos com o Ionic.
Continue reading →

Desenvolvimento Móvel Nativo vs Híbrido

Desenvolvimento móvel nativo e desenvolvimento móvel híbrido são duas formas de criar aplicativos para dispositivos móveis, como smartphones e tablets. Cada uma tem suas vantagens e desvantagens, dependendo do objetivo, do público-alvo e do orçamento do projeto.

Um aplicativo nativo é aquele que é desenvolvido especificamente para uma plataforma ou sistema operacional, como Android ou iOS. Isso significa que ele usa a linguagem de programação, as ferramentas e os recursos nativos da plataforma, como a interface gráfica, os sensores, a câmera, o GPS, etc. Um aplicativo nativo pode oferecer uma melhor experiência de usuário, um maior desempenho e uma maior integração com o dispositivo.

No entanto, um aplicativo nativo também tem algumas desvantagens. Ele requer mais tempo e custo de desenvolvimento, pois é preciso criar um código diferente para cada plataforma. Além disso, ele depende da aprovação das lojas de aplicativos, como a Google Play ou a App Store, para ser distribuído e atualizado. E ele pode ter problemas de compatibilidade com diferentes versões ou modelos de dispositivos.

Continue reading →

macOS vs Windows vs Linux no Desenvolvimento Web

Desenvolver um aplicativo web é uma tarefa que pode ser realizada em diferentes sistemas operacionais, como macOs, Windows e Linux. Cada um desses sistemas tem suas vantagens e desvantagens, dependendo das preferências e necessidades do desenvolvedor. Neste texto, vamos comparar alguns aspectos importantes entre eles.

macOS

O macOS é o sistema operacional da Apple, que roda nos computadores Mac. Ele é conhecido por seu design elegante, sua performance estável e sua integração com outros produtos da marca, como iPhone e iPad. Alguns dos benefícios de usar o macOs para desenvolver um aplicativo web são:

Continue reading →

O que é o Firebase?

Ou, tudo o que você gostaria de saber sobre o Firebase mas tinha medo de perguntar.

Uma das principais características do Firebase é a sua integração perfeita com outros produtos do Google Cloud, o que oferece escalabilidade e confiabilidade aos aplicativos. Ele oferece uma ampla gama de recursos que abrangem várias áreas-chave do desenvolvimento de aplicativos, incluindo autenticação de usuários, armazenamento de dados em tempo real, hospedagem, mensagens em nuvem, testes e muito mais.

O Firebase oferece uma solução completa para lidar com a autenticação de usuários, permitindo que os desenvolvedores implementem facilmente recursos de login com várias opções, como e-mail/senha, autenticação social (Google, Facebook, Twitter, etc.) e autenticação de telefone.

Além disso, o Firebase inclui o Realtime Database, um banco de dados em tempo real baseado em nuvem, que permite armazenar e sincronizar dados em tempo real entre os clientes e o servidor. Essa funcionalidade é ideal para aplicativos colaborativos ou aplicativos que requerem atualizações em tempo real, como chat em tempo real, jogos multiplayer e muito mais.

Continue reading →