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

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

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


person Jonathan K    schedule 11.11.2013    source источник
comment
В настоящее время лучший способ — создать новую учетную запись электронной почты/пароля, когда вы будете готовы продвигать и копировать все данные, а также удалить старую анонимную учетную запись из свойств пользователей в вашей Firebase.   -  person Anant    schedule 12.11.2013


Ответы (1)


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

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

Вот модифицированный пример из документации Firebase:

var firebaseRef = new Firebase('https://samplechat.firebaseio-demo.com');
firebaseRef.onAuth(function(authData) {
  if (authData) {
    // Client is logged in, so check if it's 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. Вы также можете сделать все это, даже не создавая анонимный вход, просто сохраняя данные сеанса до тех пор, пока пользователь не войдет в систему, но анонимный вход обеспечивает большую согласованность.

person Dustin    schedule 10.11.2014