0

Я использую Ionic2 rc4 и Firebase Authentication. Если я звоню signupFirebaseUser(), он регистрирует uid, как и ожидалось. Тем не менее, когда я тогда звоню loginGoogle(), я ожидаю, что он будет регистрировать другой uid, но он печатает тот же uid.Firebase Login - Как сбросить uid?

Это означает, что пользователь не может войти с email address и password, выйдите из системы, а затем снова войти с помощью аккаунта Google (разные адреса электронной почты), потому что он хочет сохранить свою старую uid.

signupFirebaseUser(email: string, password: string): firebase.Promise<any> { 
    return this.fireAuth.createUserWithEmailAndPassword(email, password).then((newUser: firebase.User) => { 
     console.log(newUser.uid); 
     this.userProfile.child(newUser.uid).set({ email: email }); 
     newUser.sendEmailVerification(); 
    }); 
} 

затем

public logout(auth: FirebaseAuth, fireAuth: firebase.auth.Auth): Promise<any> { 
     return auth.logout().then(() => { 
      fireAuth.signOut().then(() => { 
      }); 
     }); 
} 

затем

loginGoogle() { 
    this.auth.login({ 
     provider: AuthProviders.Google, 
     method: AuthMethods.Popup 
    }).then((data: FirebaseAuthState) => { 
     console.log(data.uid); 
    }).catch((error) => { 
     console.error('loginGoogle', error); 
    }); 
    } 

Вопрос

Как вы сбросить Firebase Authentication забыть старую uid? Поэтому, когда вы снова входите в систему, вы делаете это с чистого старта.

i.e. Создать новый uid для каждого провайдера (Google, Facebook, E-mail).

Любая помощь приветствуется.

+1

Одним из способов может быть удаление пользователя с помощью user.delete(), а затем воссоздание будет автоматически иметь новый UID – AndroidBeginner

+0

Да, вы правы, что сработает. Но что произойдет, если вы хотите снова войти в систему как старый пользователь (т. Е. Сохранить обмен пользователями)? Я не хочу удалять учетную запись, потому что я храню данные для каждого пользователя. – Richard

+0

Извините, непонятно. Не могли бы вы использовать новый Firebase Auth API для входа в Google? (Https://firebase.google.com/docs/auth/web/google-signin). Если вам нужна поддержка Cordova, вы можете использовать плагин OAuth (например, https://github.com/nraboy/ng-cordova-oauth), а затем вызвать signInWithCredential() с помощью токена доступа. –

ответ

0

У вас, скорее всего, есть опция, по которой вы можете иметь только одну учетную запись на адрес электронной почты (это действительно значение по умолчанию, если я правильно помню). Чтобы изменить эту опцию, перейдите на страницу https://console.firebase.google.com/project/_/authentication/providers, выберите проект Firebase, прокрутите вниз до раздела «Дополнительно» и нажмите кнопку «Изменить» рядом с «Одна учетная запись на адрес электронной почты». Там вы можете настроить способ обработки учетных записей на тот же адрес электронной почты и отключить это поведение.

+0

Спасибо, но это не сработает для меня. Я хочу только одну учетную запись для каждого адреса электронной почты, но я хочу, чтобы более одного адреса электронной почты мог войти в одно и то же приложение или в браузер. Моя проблема в том, что если другой адрес электронной почты пытается войти в систему, он терпит неудачу, потому что uid не изменяется. Все, что я хочу, - это сопоставление между собой между адресом электронной почты и uid (или учетной записью). – Richard

+0

Какова точная ошибка, которую вы получаете, когда происходит вход? – jwngr

+0

Я сейчас очень смущен. Кажется, он работает, когда я его тестирую. У меня, должно быть, была ошибка в моем коде, которую я нечаянно исправил. Извините за то, что потратил ваше время. Я ценю помощь. – Richard

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