Firebase - преобразовать анонимного пользователя вошедшего в систему пользователя?

Контекст: в моей игре для iOS я хотел бы разрешить пользователям играть без входа в систему (аутентификация анонимно в Firebase для сохранения пользовательских данных), но также дать им возможность войти через Facebook, чтобы разблокировать дополнительный игровой процесс.

Я пытаюсь изменить этот пост, заменив логины Twitter анонимными:

"users": {
    "$userid": {
      // Require the user to be logged in, and make sure their current credentials
      // match at least one of the credentials listed below, unless we're creating
      // a new account from scratch.
      ".write": "auth != null && 
        (data.val() === null || 
        (auth.provider === 'facebook' && auth.uid === data.child('facebook/id').val() || 
        (auth.provider === 'anonymous' && auth.uid === data.child('anonymous/id').val()))"
    }
  }

Я запутался, как переход будет работать с этими правилами. В частности, сказать:

  1. Пользователь аутентифицируется анонимно и может создать каноническую запись пользователя с анонимным идентификатором пользователя, хранящимся в users/"$userid"/anonymous/id, Это разрешено, потому что пользователь проходит проверку подлинности, а пользовательский объект устанавливается впервые (auth != null && data.val() === null).

  2. Любые последующие записи в users/"$userid"/ разрешены, потому что анонимный идентификатор аутентифицированного пользователя хранится в дереве пользователя (auth != null && (auth.provider === 'anonymous' && auth.uid === data.child('anonymous/id').val())).

  3. Пользователь заходит на фейсбук. Сейчас authData содержит идентификатор пользователя Facebook, который еще не был записан users/"$userid"/facebook/id, Сбой записи в это местоположение, потому что правила безопасности не позволяют этого.

Таким образом, анонимный пользователь не имеет доступа к идентификатору Facebook до тех пор, пока не завершится аутентификация Facebook. На этом этапе уже поздно писать users/"$userid"/facebook/id потому что аутентифицированный пользователь теперь является пользователем Facebook и не имеет права писать туда.

Я что-то пропустил? Любые идеи о том, как исправить эту ситуацию?

0 ответов

Другие вопросы по тегам