Use a API FCM HTTP v1 com tokens de acesso OAuth 2

1. Introdução

Em comparação com a API legada do FCM, a API FCM HTTP v1 fornece um modelo de autorização mais seguro usando tokens de acesso de curta duração. As etapas para gerar o token de acesso para a API FCM v1 são significativamente diferentes das etapas para a API legada.

Este codelab orienta você no processo de configuração do cliente e do servidor para permitir o envio de notificações push para um app Android usando a API FCM HTTP v1. Ele destaca a etapa principal da geração de credenciais para a API v1.

Mais informações podem ser encontradas em:

Pré-requisitos

  • Compreensão básica do desenvolvimento Java e Android

O que você aprenderá

  • Etapas detalhadas de configuração do lado do cliente e do servidor para permitir o envio de notificações push para seu aplicativo Android usando a API FCM HTTP v1
  • Geração de credenciais para a API HTTP v1 usando contas de serviço
  • Envio de mensagens de teste por meio da API HTTP v1

O que você precisará

Última versão estável do Android Studio

Um dos seguintes dispositivos:

Um ambiente de desenvolvimento Java ou editor de código de sua escolha

2. Projeto Firebase e configuração do aplicativo Android

Ao final do codelab, você poderá enviar mensagens para seu aplicativo usando o Firebase Cloud Messaging. Antes de fazer isso, você precisará criar um projeto Firebase. Este codelab também fornece um app Android contendo código de amostra para integração com o FCM.

Configuração do projeto Firebase

Configuração do aplicativo Android

O exemplo de app Android fornecido neste codelab já está integrado ao FCM. Após iniciar, ele se registrará no servidor FCM e se inscreverá em um tópico. Nas etapas posteriores deste codelab, você enviará uma mensagem de tópico para o tópico e seu aplicativo a receberá.

3. Configure o servidor de aplicativos

Agora que seu aplicativo está configurado, você precisará fazer download de um exemplo de código do lado do servidor para enviar mensagens ao seu aplicativo usando a API FCM v1. Este código carrega as credenciais da API (descritas na próxima seção) para gerar um token de acesso. Em seguida, ele envia uma mensagem para seu aplicativo usando mensagens de tópico do FCM.

  • Importe o código do servidor inicial baixando o projeto Github . O projeto "messaging" é um projeto Java baseado em Gradle com dependência do SDK firebase-admin , que fornece funcionalidade para enviar mensagens.

Mais detalhes sobre como um servidor de aplicativos deve funcionar com o FCM podem ser encontrados no documento Seu ambiente de servidor e FCM .

4. Obtenha credenciais v1

A API FCM HTTP v1 usa tokens de acesso de curta duração de acordo com o modelo de segurança OAuth2. Em comparação com a chave de API estática usada na API legada do FCM, o token de acesso de curta duração é menos sujeito ao risco de vazamento de credenciais. Esta seção detalha as etapas para criar uma credencial para gerar o token de acesso usado na chamada da API.

  1. Configure uma conta de serviço do Firebase para permitir que o SDK Admin do Firebase autorize chamadas para APIs do FCM. Abra Configurações do projeto no console do Firebase e selecione a guia Contas de serviço . Clique em Gerar nova chave privada para fazer download do snippet de configuração. Uma captura de tela cortada destacando o snippet de configuração do SDK Admin do componente Contas de serviço da página Configurações do projeto
  2. No projeto Github baixado, renomeie o arquivo baixado para service-account.json e copie-o para messaging/ caminho do projeto.
  3. O método getAccessToken() (mostrado abaixo) na classe Messaging.java gera um token OAuth2 válido por 1 hora.
private static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES));
  googleCredentials.refresh();
  return googleCredentials.getAccessToken().getTokenValue();
}
  1. Altere o método main para adicionar a seguinte linha:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Vá para o diretório de mensagens/projeto em seu terminal e digite:
./gradlew run -Pmessage=common-message

para imprimir o token OAuth2.

Mais informações podem ser encontradas em Autorizar solicitações de envio .

5. Envie uma mensagem com a API REST

Agora você está pronto para enviar uma mensagem por meio da API HTTP v1. Siga os passos abaixo:

  • Para adicionar o token de acesso a um cabeçalho de solicitação HTTP:
  • Adicione o token como o valor do cabeçalho Authorization no formato Authorization: Bearer <access_token>
  • Faça uma solicitação HTTP para a API FCM v1 usando curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d  "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send

O $topic_name acima pode ser encontrado no código do aplicativo Android mencionado no projeto Firebase e na configuração do aplicativo Android. Por padrão é "weather" .

  • Depois que uma mensagem for entregue com sucesso, você verá uma notificação aparecer na tela, semelhante à imagem abaixo:

54ae84ece22202cd.png

6. Conclusão

Parabéns! Você concluiu o codelab para:

  • Configure um projeto do Firebase
  • Integre o Firebase a um aplicativo Android
  • Criar credenciais para a API FCM HTTP v1
  • Envie uma mensagem para seu aplicativo por meio da API FCM HTTP v1

Para explorar os recursos avançados que o FCM oferece, as seguintes referências são úteis: