O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Limpar e exportar dados do usuário final

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Para ajudar você a controlar os dados dos usuários, a equipe do Firebase criou uma biblioteca que simplifica dois processos comuns de dados do usuário:

  • clearData : exclui os dados de um usuário de serviços específicos do Firebase (atualmente Realtime Database, Firestore e Storage) quando ele exclui sua conta por meio do Firebase Authentication.

  • exportData : salva uma cópia dos dados de um usuário dos serviços do Firebase em uma string JSON e faz o upload para o Cloud Storage para que eles possam fazer o download facilmente.

Continue lendo para descobrir como adicionar as funções ao seu aplicativo ou vá direto para o código no repositório GitHub de privacidade do usuário do Firebase .

Adicione clearData ou exportData ao seu aplicativo

As funções clearData e exportData na biblioteca são implementadas como Cloud Functions que operam em dados no Realtime Database, Cloud Storage e Cloud Firestore. Adicionar as funções em seu próprio aplicativo é um processo de três etapas:

  1. Edite o arquivo user_privacy.json da biblioteca para refletir o esquema do Realtime Database, do Cloud Firestore e do Cloud Storage do seu aplicativo.
  2. Implante clearData e exportData como Cloud Functions.
  3. Implemente gatilhos para as funções em seu aplicativo.
  4. Proteja os dados clearData com regras de armazenamento.

Edite o arquivo user_privacy.json da biblioteca

Para começar, clone ou baixe o repositório GitHub de privacidade do usuário do Firebase .

Quando tiver feito isso, abra functions/user_privacy.json em um editor de texto. O arquivo json tem uma série de caminhos personalizáveis ​​que as funções clearData e exportData usam para encontrar os dados do seu aplicativo no Realtime Database, Cloud Firestore e Cloud Storage. Se seu aplicativo usa apenas um ou dois desses serviços, comece excluindo os objetos JSON associados aos serviços não utilizados.

Com os objetos desaparecidos, você pode começar a substituir os valores de espaço reservado dos serviços restantes pelas estruturas de dados reais que seu aplicativo usa.

Adicionar caminhos do Realtime Database aos dados do usuário

Para personalizar user_privacy.json para a instância do Realtime Database do seu aplicativo, substitua a lista de strings de marcador em "database" pelos caminhos reais para os dados do usuário:

...
  "database": {
    "clear": [
      "/users/UID_VARIABLE",    // Replace with your
      "/admins/UID_VARIABLE"    // actual RTDB paths
    ],
    "export": [
      "/users/UID_VARIABLE",    // Replace with your
      "/admins/UID_VARIABLE"    // actual RTDB paths
    ]
  },
...

Se você quiser adicionar apenas uma das funções ao seu aplicativo, poderá excluir o objeto da outra função, em vez de preenchê-lo com seus dados.

Adicionar objetos do Cloud Firestore que contêm dados do usuário

Para personalizar user_privacy.json para a instância do Cloud Firestore do seu aplicativo, substitua a lista de objetos de marcador em "firestore" por objetos reais do Cloud Firestore que contêm dados do usuário:

...
  "firestore": {
    "clear": [
      {"collection": "users", "doc": "UID_VARIABLE", "field": "name"},
      {"collection": "users", "doc": "UID_VARIABLE"},    // Replace with your
      {"collection": "admins", "doc": "UID_VARIABLE"}    // actual Firestore paths
    ],
    "export": [
      {"collection": "users", "doc": "UID_VARIABLE", "field": "name"},
      {"collection": "users", "doc": "UID_VARIABLE"},    // Replace with your
      {"collection": "admins", "doc": "UID_VARIABLE"}    // actual Firestore paths
    ]
  },
...

Se você quiser adicionar apenas uma das funções ao seu aplicativo, poderá excluir o objeto da outra função, em vez de preenchê-lo com seus dados.

Adicione o bucket do Cloud Storage e o nome do arquivo com dados do usuário

Para personalizar user_privacy.json para a instância do Cloud Storage do seu aplicativo, substitua o intervalo de armazenamento do marcador e o nome do arquivo em "storage" pelos valores reais:

...
  "storage": {
    "clear": [    // Replace with your actual storage data
      ["clear-export.appspot.com", "UID_VARIABLE/sample_data.json"],
      ["clear-exportappspot.com", "UID_VARIABLE"]
    ],
    "export": [    // Replace with your actual storage data
      ["clear-export.appspot.com", "UID_VARIABLE/sample_data.json"]
    ]
  },
...

Se você quiser adicionar apenas uma das funções ao seu aplicativo, poderá excluir o objeto da outra função, em vez de preenchê-lo com seus dados.

Implantar clearData e exportData como Cloud Functions

Se você ainda não estiver familiarizado com o Cloud Functions, leia sobre como usá-lo no guia de primeiros passos do Cloud Functions .

Quando estiver familiarizado com o Cloud Functions, adicione as funções clearData e exportData ao seu projeto:

  1. Copie seu user_data.json customizado para seu diretório de functions .
  2. Copie o código do index.js da biblioteca de privacidade do usuário para o index.js do seu projeto.
    • Se você não estiver usando clearData , omita as clearData , clearDatabaseData , clearFirestoreData e clearStorageData .
    • Se você não estiver usando exportData , omita as exportData , exportDatabaseData , exportFirestoreData e exportStorageData .
  3. Implante suas funções.

Implemente gatilhos para clearData e exportData

Cada função requer um gatilho diferente:

  • clearData : acionado quando um usuário exclui sua conta por meio de autenticação.
  • exportData : acionado por uma solicitação HTTP.

Implementar um gatilho clearData

Para acionar um evento clearData , você precisa usar um método de Autenticação. Se você ainda não fez isso, adicione Autenticação ao seu aplicativo: plataformas Apple , Android ou web .

Em seguida, adicione uma maneira de invocar o método de delete do SDK de autenticação para sua plataforma:

iOS+

FirebaseAuth.User.delete { error in
  if let error = error {
    print("Error deleting user: \(error)")
  }
}

Android

FirebaseAuth.getCurrentUser().delete();

Rede

firebase.auth().currentUser.delete().catch(function(error) {
  if (error.code === 'auth/requires-recent-login') {
    window.alert('Please sign-in and try again.');
    firebase.auth().signOut();
  }
});

Implementar um gatilho exportData

Para implementar um gatilho exportData , adicione um botão ou link ao seu aplicativo que invoque a função por meio de uma solicitação HTTP. Leia mais sobre como invocar funções por HTTP em Chamar funções por meio de solicitações HTTP .

Pedir detalhes:

  • Tipo: POST
  • URL: https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
  • Corpo: <var>CURRENT_USER'S_UID</var>

Invoque a função diretamente no Firebase Hosting

Se seu aplicativo for um aplicativo da Web hospedado no Firebase Hosting, você poderá invocar sua função clearData por meio de uma entrada de rewrite no arquivo firebase.json do site:

  "hosting": {
    "rewrites": [
       {"source": "/exportData", "function": "exportData"}
    ]
  }

Dados seguros exportData com regras de armazenamento

Para manter a privacidade dos dados exportados dos seus usuários, adicione regras do Cloud Storage que restrinjam o acesso ao usuário exportador.

  1. Visite Armazenamento no console do Firebase .
  2. Abra a guia Regras .
  3. Cole a seguinte regra e clique em Publicar :
service firebase.storage {
  match /b/{bucket}/o {
    match /exportData {
      // Only allow access to the user who requested the export
      match /{uid} {
        allow read, write: if request.auth.uid == uid
      }
      match /{uid}/{path=**} {
        allow read, write: if request.auth.uid == uid
      }
    }
    // Other application rules...
  }
}