Firebase Auth Linking Слияние проблем учетных записей - PullRequest
1 голос
/ 08 ноября 2019

У меня настроено приложение, так что пользователи могут использовать его без входа в систему. Это включает возможность сохранять данные. Каждый кортеж устройства / браузера создает новую учетную запись анонимного пользователя для хранения данных.

Я в процессе добавления (facebook) имени входа, чтобы пользователи могли убедиться, что их данные сохраняются в браузерах и на устройствах.

Документация Firebase показывает, как обрабатывать случай, когда пользователь пытается связать свою учетную запись из нескольких анонимных учетных записей, и рекомендует подход для объединения данных:

firebase docs recommended approach https://firebase.google.com/docs/auth/web/account-linking

Моя проблема с этим подходом заключается в том, что он удаляет исходную учетную запись, которая была связана, что по существу загружает первую учетную запись из зарегистрированного состояния.

Представьте себе этот поток для одного пользователя:

  1. Вход в устройство A и сохранение данных
  2. Вход в устройство B и сохранение дополнительных данных.
  3. На устройстве A начинается поток «входа в систему» ​​с использованием Facebook для и заканчивается соединениеУчетные данные facebook.
  4. На устройстве B они снова входят в систему / связываются с Facebook (связывание не удается, поэтому мы должны использовать альтернативный метод обращения).
  5. Рекомендуемый процесс удаляет исходную учетную запись, созданную на устройстве A, и они должны снова войти в систему с помощью Facebook на этом устройстве.

Я реализовал другой процесс, который не приводит к загрузке устройства A, ивместо этого регистрирует устройство B в учетной записи, созданной на устройстве A. Моя проблема с этим потоком состоит в том, что я не могу удалить пользовательские данные с устройства B после того, как я успешно вошел в систему на устройстве A, потому что я использую правила контроля доступа в firebaseтак что пользовательские данные могут быть изменены только зарегистрированным пользователем, которому они принадлежат.

enter image description here

потенциальные (неоптимальные) решения:

  • Удалите пользовательские данные перед входом в другую учетную запись, но затем, если в любой момент произойдет сбой, пользовательские данные будут потеряны.
  • При успешном входе в учетную запись AI может выйти из системы, войдите в учетную запись B,удалите данные B, а затем снова войдите в учетную запись A, но это решение кажется очень не элегантным.

Я не понимаю, почему пример в FirebasДокументы, похоже, имеют эту вопиющую проблему и задаются вопросом, как лучше всего справиться с этой ситуацией.

1 Ответ

0 голосов
/ 12 ноября 2019

Я не получил ответов, но я реализовал, как мне кажется, «достаточно элегантное» решение проблемы.

Вместо удаления учетной записи и данных prevUser после успешного входа в систему другого пользователя. аккаунт, я просто удаляю аккаунт: enter image description here

Я реализовал функцию firebase для обработки удаления потерянных пользовательских данных: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...