Чтобы помочь вам помочь вашим пользователям контролировать свои данные, команда Firebase создала библиотеку, которая упрощает два распространенных процесса обработки пользовательских данных:
clearData
: удаляет данные пользователя из определенных сервисов Firebase (в настоящее время базы данных Realtime, Firestore и Storage), когда они удаляют свою учетную запись через Firebase Authentication .exportData
: сохраняет копию данных пользователя из сервисов Firebase в строку JSON и загружает ее в Cloud Storage , чтобы они могли легко загрузить ее для себя.
Продолжайте читать, чтобы узнать, как добавить функции в ваше приложение, или сразу переходите к коду в репозитории конфиденциальности пользователей Firebase на GitHub .
Добавьте clearData
или exportData
в свое приложение.
clearData
exportData
в библиотеке реализованы как Cloud Functions , которые работают с данными в Realtime Database , Cloud Storage и Cloud Firestore . Добавление функций в ваше собственное приложение представляет собой трехэтапный процесс:
- Отредактируйте файл
user_privacy.json
библиотеки, чтобы отразить схему Realtime Database , Cloud Firestore и Cloud Storage вашего приложения. - Разверните
clearData
иexportData
как Cloud Functions . - Реализуйте триггеры для функций в вашем приложении.
- Защитите данные
clearData
с помощью правил хранения.
Отредактируйте файл user_privacy.json
библиотеки.
Для начала клонируйте или загрузите репозиторий конфиденциальности пользователей Firebase на GitHub .
Сделав это, откройте functions/user_privacy.json
в текстовом редакторе. Файл json имеет ряд настраиваемых путей, которые функции clearData
и exportData
используют для поиска данных вашего приложения в Realtime Database , Cloud Firestore и Cloud Storage . Если ваше приложение использует только одну или две из этих служб, начните с удаления объектов JSON, связанных с неиспользуемыми службами.
Удалив объекты, вы можете начать заменять значения заполнителей оставшихся служб фактическими структурами данных, которые использует ваше приложение.
Добавление путей Realtime Database к пользовательским данным
Чтобы настроить user_privacy.json
для экземпляра Realtime Database вашего приложения, замените список строк-заполнителей в разделе "database"
фактическими путями к пользовательским данным:
... "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 ] }, ...
Если вы хотите добавить в приложение только одну функцию, вы можете удалить объект другой функции вместо того, чтобы заполнять его своими данными.
Добавьте объекты Cloud Firestore , содержащие пользовательские данные.
Чтобы настроить user_privacy.json
для экземпляра Cloud Firestore вашего приложения, замените список объектов-заполнителей в разделе "firestore"
реальными объектами Cloud Firestore , содержащими пользовательские данные:
... "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 ] }, ...
Если вы хотите добавить в приложение только одну функцию, вы можете удалить объект другой функции вместо того, чтобы заполнять его своими данными.
Добавьте сегмент Cloud Storage и имя файла с пользовательскими данными.
Чтобы настроить user_privacy.json
для экземпляра Cloud Storage вашего приложения, замените заполнитель хранилища и имя файла в разделе "storage"
фактическими значениями:
... "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"] ] }, ...
Если вы хотите добавить в приложение только одну функцию, вы можете удалить объект другой функции вместо того, чтобы заполнять его своими данными.
Развертывание clearData
и exportData
как Cloud Functions
Если вы еще не знакомы с Cloud Functions , прочитайте, как их использовать, в руководстве по началу работы Cloud Functions .
Как только вы освоитесь с Cloud Functions , добавьте в свой проект clearData
exportData
:
- Скопируйте настроенный
user_data.json
в каталогfunctions
. - Скопируйте код из
index.js
библиотеки конфиденциальности пользователя вindex.js
вашего проекта.- Если вы не
clearData
, опуститеclearData
,clearDatabaseData
,clearFirestoreData
clearStorageData
. - Если вы не используете
exportData
, опустите функцииexportData
,exportDatabaseData
,exportFirestoreData
иexportStorageData
.
- Если вы не
- Разверните свои функции.
Реализация триггеров для clearData
и exportData
Для каждой функции требуется отдельный триггер:
-
clearData
: срабатывает, когда пользователь удаляет свою учетную запись посредством Authentication . -
exportData
: запускается HTTP-запросом.
Реализация триггера clearData
Чтобы вызвать событие clearData
, вам нужно использовать метод из Authentication . Если вы еще этого не сделали, добавьте Authentication в свое приложение: платформы Apple , Android или веб-версия .
Затем добавьте способ вызова метода delete
Authentication SDK для вашей платформы:
iOS+
FirebaseAuth.User.delete { error in
if let error = error {
print("Error deleting user: \(error)")
}
}
Андроид
FirebaseAuth.getCurrentUser().delete();
Интернет
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();
}
});
Реализация триггера exportData
Чтобы реализовать триггер exportData
, добавьте в свое приложение кнопку или ссылку, которая вызывает функцию через HTTP-запрос. Подробнее о вызове функций через HTTP читайте в разделе Вызов функций через HTTP-запросы .
Подробности запроса:
- Тип:
POST
- URL-адрес:
https://us-central1-<var>PROJECT-ID<.var>.cloudfunctions.net/exportData
- Тело:
<var>CURRENT_USER'S_UID</var>
Вызовите функцию непосредственно на Firebase Hosting
Если ваше приложение представляет собой веб-приложение, размещенное на Firebase Hosting , вы можете вызвать clearData
, rewrite
запись в файле firebase.json
сайта:
"hosting": {
"rewrites": [
{"source": "/exportData", "function": "exportData"}
]
}
Защита данных exportData
с помощью правил хранения
Чтобы сохранить конфиденциальность экспортированных данных ваших пользователей, добавьте правила Cloud Storage , которые ограничивают доступ экспортирующему пользователю.
- Посетите Storage в консоли Firebase .
- Откройте вкладку «Правила» .
- Вставьте следующее правило и нажмите «Опубликовать» :
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... } }