2013-11-11 4 views
11

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

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

+3

Лучший способ в настоящее время - создать новую учетную запись электронной почты и пароля, когда вы будете готовы продвигать и копировать все данные и удалять старую «анонимную» учетную запись из свойства пользователя в вашей Firebase. – Anant

ответ

12

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

Чтобы передать данные пользователю после входа в систему, вам необходимо использовать прослушиватель Firebase onAuth(). Это уведомит вас, когда изменятся данные пользователя. Когда у вас есть новый аутентифицированный 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 был, когда пользователь изменяет свою информацию аутентификации, так что вам действительно нужно сохранить этот анонимный идентификатор пользователя где-то. Вы также можете сделать все это, не создавая анонимного входа, просто сохраняя данные сеанса до входа пользователя в систему, но анонимный логин обеспечивает большую согласованность.

Смежные вопросы