Вы можете начать с создания 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 был, когда пользователь изменяет свою информацию аутентификации, так что вам действительно нужно сохранить этот анонимный идентификатор пользователя где-то. Вы также можете сделать все это, не создавая анонимного входа, просто сохраняя данные сеанса до входа пользователя в систему, но анонимный логин обеспечивает большую согласованность.
Лучший способ в настоящее время - создать новую учетную запись электронной почты и пароля, когда вы будете готовы продвигать и копировать все данные и удалять старую «анонимную» учетную запись из свойства пользователя в вашей Firebase. – Anant