Создание временных анонимных пользователей в Firebase

Я пытаюсь автогенерировать учетные записи пользователей, с которыми я могу сохранять данные, а затем продвигать их в правильные учетные записи для имени пользователя и пароля. Любые идеи о том, как это сделать?

Мне было непонятно, могу ли я переключать аут-провайдеров с анонимного на пароль.

Ответ 1

Вы можете начать с создания анонимного входа в систему с помощью Firebase, а затем сохранить этот ключ "uid" для своего рода сеанса или файла cookie (в зависимости от того, "работаю" ). Пока клиент анонимен, вы можете связать сохраненные данные с этим анонимным "uid".

Чтобы передать данные пользователю после входа в систему, вам нужно будет использовать прослушиватель Firebase onAuth(). Это уведомит вас, когда пользовательские данные будут изменены. Когда у вас есть новый аутентифицированный uid, вы можете связать свои сохраненные данные с этим новым uid и удалить анонимный сеанс.

Здесь измененный образец из Firebase docs:

var firebaseRef = new Firebase('https://samplechat.firebaseio-demo.com');
firebaseRef.onAuth(function(authData) {
  if (authData) {
    // Client is logged in, so check if it anonymous or a real user

    if (authData.provider === 'anonymous') {
      // user is anonymous
      // save authData.uid to some local session info, to keep track of data
    } else {
      // user is logged in
      // transfer any data that you had stored from the anonymous session to 
      // this new authUser.uid

  } else {
    // Client is unauthenticated

    // This would be a good spot to create the anonymous login
    firebaseRef.authAnonymously(function(error, authData) {
      if (error) {
        // handle login failure
      } else {
        // you are now anonymously logged in, but you really don't need to do anything
        // here, because your onAuth() listener is already going to catch this auth change
      }
  }
});

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