Fazer upgrade do app para Web/Node.js no Firebase.com

Este documento orienta você sobre a atualização dos seus aplicativos para Web e Node.js existentes do Firebase.com para o novo Firebase console e os SDKs versões 3.x.

Três etapas são necessárias:

  1. Importar seu projeto no Firebase console.
  2. Atualizar seu código do banco de dados.
  3. Atualizar seu código de autenticação.

Você pode importar o projeto a qualquer momento. Seus aplicativos e SDKs existentes continuarão funcionando. Atualize seu código quando você estiver pronto para usar alguns dos novos recursos do Firebase no seu aplicativo.

Importar o projeto para o Firebase console

  • Acesse o Firebase console e localize seu projeto em "Projetos atualmente no Firebase.com".
  • Clique em Importar no projeto em que quer fazer upgrade.
    • Caso seu projeto esteja em um plano pago do firebase.com, você precisará configurar o faturamento dele no novo console. Suas informações de faturamento não são migradas automaticamente.
    • Selecione ou crie uma conta de faturamento. Após a importação, essa conta será responsável por todas as cobranças do projeto.
  • Seu conteúdo no Realtime Database and Hosting é importado automática e instantaneamente para o Console do Firebase.
  • Seus dados de usuário são migrados automaticamente para o novo back-end de autenticação. Isso acontece em segundo plano, e seus usuários continuam a usar o aplicativo enquanto os dados são migrados. As inscrições e os logins dos usuários não são afetados. Enquanto o sistema migra as contas de usuário, você verá um ícone de carregamento na guia "Auth" do Console do Firebase.
  • Caso você tenha um código promocional para um aplicativo do Firebase.com, entre em contato conosco.

Fazer upgrade da CLI do Firebase

Para usar a Interface de linha de comando (CLI, na sigla em inglês) com uma versão atualizada do projeto, instale a versão 3.0 ou posterior. Para isso, execute:

npm install -g firebase-tools

Assim que você tiver a versão mais recente da CLI do Firebase, é necessário se autenticar novamente ao executar firebase login. Para receber um novo token para servidores de integração contínua ou outros sistemas sem comandos, execute firebase login:ci.

Por fim, você precisa executar firebase tools:migrate em cada um dos diretórios para todos os projetos migrados do Firebase.com.

Atualizar a versão do cliente

Não é necessário atualizar o código dos aplicativos imediatamente. O código existente de banco de dados e de autenticação continuará a funcionar no seu projeto atualizado. Porém, quando você estiver pronto para usar os novos recursos do Firebase no seu aplicativo, siga as etapas a seguir para migrar o código do banco de dados para as novas APIs.

A maneira mais fácil de começar é alterar o "include" do seu script:

ANTES

<script src="https://cdn.firebase.com/js/client/2.3.2/firebase.js"></script>
DEPOIS

<script src="https://www.gstatic.com/firebasejs/5.8.4/firebase.js"></script>

Se você estiver migrando um app Node.js, poderá fazer o download da versão mais recente do pacote nb firebase com os comandos a seguir. Para garantir que firebase não esteja fixada à versão 2.X, desinstale-o antes de instalar a versão mais recente:

$ npm uninstall firebase --save
$ npm install firebase --save

Receber uma referência do banco de dados

Nos SDKs novos, você não precisa mais representar referências de um banco de dados com instâncias por meio de new Firebase. Em vez disso, inicialize o SDK com firebase.initializeApp():

ANTES

var ref = new Firebase("https://databaseName.firebaseio.com");
DEPOIS

// See https://firebase.google.com/docs/web/setup#project_setup for how to
// auto-generate this config
var config = {
  apiKey: "apiKey",
  authDomain: "your-firebase-project-id.firebaseapp.com",
  databaseURL: "https://databaseName.firebaseio.com"
};

firebase.initializeApp(config);

var rootRef = firebase.database().ref();

É possível gerar a configuração acima automaticamente ao seguir as instruções na página de configuração da Web.

Getters sem argumentos agora são propriedades somente leitura

Muitos getters sem argumentos foram alterados para propriedades somente leitura:

ANTES

// Reference
var key = ref.key();
var rootRef = ref.root();
var parentRef = ref.parent();

// Query
var queryRef = query.ref();

// DataSnapshot
ref.on("value", function(snapshot) {
  var dataRef = snapshot.ref();
  var dataKey = snapshot.key();
});
DEPOIS

// Reference
var key = ref.key;
var rootRef = ref.root;
var parentRef = ref.parent;

// Query
var queryRef = query.ref;

// DataSnapshot
ref.on("value", function(snapshot) {
  var dataRef = snapshot.ref;
  var dataKey = snapshot.key;
});

Atualizar seu código de autenticação.

A funcionalidade Firebase Authentication agora tem o próprio serviço firebase.auth(), e vários métodos foram renomeados. Por exemplo, veja como você autentica um usuário com um provedor de OAuth agora:

ANTES

ref.authWithOAuthPopup("twitter", function(error, authData) {
  if (error) {
    // An error occurred
    console.error(error);
  } else {
    // User signed in!
    var uid = authData.uid;
  }
});
DEPOIS

var auth = firebase.auth();

var provider = new firebase.auth.TwitterAuthProvider();
auth.signInWithPopup(provider).then(function(result) {
  // User signed in!
  var uid = result.user.uid;
}).catch(function(error) {
  // An error occurred
});

Este é um exemplo de como o login com um token personalizado funciona tanto na API 2.x como na nova:

ANTES

ref.authWithCustomToken(AUTH_TOKEN, function(error, authData) {
  if (error) {
    console.log("Login Failed!", error);
  } else {
    console.log("Login Succeeded!", authData);
  }
});
DEPOIS

firebase.auth().signInWithCustomToken(AUTH_TOKEN).catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

Os tokens personalizados gerados por você têm um novo formato. Use os SDKs Admin do Firebase para Node.js e Java caso queira criar tokens personalizados compatíveis com a API nova. Se preferir, você poderá criar tokens personalizados usando uma biblioteca JWT de terceiros.

Os SDKs de administrador do Firebase geram tokens personalizados que expiram depois de uma hora, ao contrário das bibliotecas de ajuda da API 2.x que, por padrão, geram tokens que expiram depois de 24 horas.

Consulte as referências da API de autenticação para Web e Node.js e veja a lista completa de métodos disponíveis.

Receber o token de acesso

Com a API do Firebase Authentication, você pode usar facilmente o token de acesso do provedor para chamar a API dele e receber informações adicionais. Esse token de acesso ainda está disponível, mas apenas imediatamente depois da conclusão da ação de login.

ANTES

ref.onAuth(function(authData) {
  if (authData) {
    var accessToken = authData.providerData[authData.provider].accessToken;
  }
})
DEPOIS

var auth = firebase.auth();

var provider = new firebase.auth.GoogleAuthProvider();
auth.signInWithPopup(provider).then(function(result) {
  var accessToken = result.credential.accessToken;
});

Como o Firebase Authentication não mantém mais o token de acesso, seu aplicativo precisa fazer isso ele mesmo, se necessário.

Monitorar o estado da autenticação

O nome do método e o argumento da chamada de retorno para o monitoramento do estado de autenticação mudou um pouco:

ANTES

ref.onAuth(function(authData) {
  if (authData) {
    // User signed in!
    var uid = authData.uid;
  } else {
    // User logged out
  }
});
DEPOIS

var auth = firebase.auth();

auth.onAuthStateChanged(function(user) {
  if (user) {
    // User signed in!
    var uid = user.uid;
  } else {
    // User logged out
  }
});

Migrar logins existentes

Se os usuários fizeram login no seu aplicativo com um SDK legado, você precisará de um código para mantê-los conectados com o novo SDK. Do contrário, eles terão que fazer login novamente. Consulte uma amostra de código aberto para fazer isso no repositório Firebase Auth Migration Helpers do GitHub.

Atualizar o novo modelo de redefinição de senha

Caso seu aplicativo permita que os usuários façam login com autenticação de e-mail e senha, você provavelmente precisa oferecer a eles a opção de redefinir senha.

Depois do upgrade para o SDK novo, esses e-mails de redefinição de senha usam os novos modelos especificados no Firebase console. Atualize-os conforme as necessidades do seu aplicativo.

Atualizar as bibliotecas do Firebase

Se você usa uma das bibliotecas abaixo, será preciso fazer upgrade para a versão mais recente.

Biblioteca Versão aceita Recurso
AngularFire 2.x.x GitHub
ReactFire 1.x GitHub
GeoFire 4.1.x GitHub

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.