У меня настроено приложение, так что пользователи могут использовать его без входа в систему. Это включает возможность сохранять данные. Каждый кортеж устройства / браузера создает новую учетную запись анонимного пользователя для хранения данных.
Я в процессе добавления (facebook) имени входа, чтобы пользователи могли убедиться, что их данные сохраняются в браузерах и на устройствах.
Документация Firebase показывает, как обрабатывать случай, когда пользователь пытается связать свою учетную запись из нескольких анонимных учетных записей, и рекомендует подход для объединения данных:
https://firebase.google.com/docs/auth/web/account-linking
Моя проблема с этим подходом заключается в том, что он удаляет исходную учетную запись, которая была связана, что по существу загружает первую учетную запись из зарегистрированного состояния.
Представьте себе этот поток для одного пользователя:
- Вход в устройство A и сохранение данных
- Вход в устройство B и сохранение дополнительных данных.
- На устройстве A начинается поток «входа в систему» с использованием Facebook для и заканчивается соединениеУчетные данные facebook.
- На устройстве B они снова входят в систему / связываются с Facebook (связывание не удается, поэтому мы должны использовать альтернативный метод обращения).
- Рекомендуемый процесс удаляет исходную учетную запись, созданную на устройстве A, и они должны снова войти в систему с помощью Facebook на этом устройстве.
Я реализовал другой процесс, который не приводит к загрузке устройства A, ивместо этого регистрирует устройство B в учетной записи, созданной на устройстве A. Моя проблема с этим потоком состоит в том, что я не могу удалить пользовательские данные с устройства B после того, как я успешно вошел в систему на устройстве A, потому что я использую правила контроля доступа в firebaseтак что пользовательские данные могут быть изменены только зарегистрированным пользователем, которому они принадлежат.

потенциальные (неоптимальные) решения:
- Удалите пользовательские данные перед входом в другую учетную запись, но затем, если в любой момент произойдет сбой, пользовательские данные будут потеряны.
- При успешном входе в учетную запись AI может выйти из системы, войдите в учетную запись B,удалите данные B, а затем снова войдите в учетную запись A, но это решение кажется очень не элегантным.
Я не понимаю, почему пример в FirebasДокументы, похоже, имеют эту вопиющую проблему и задаются вопросом, как лучше всего справиться с этой ситуацией.