Я использую 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).
Любая помощь приветствуется.
Одним из способов может быть удаление пользователя с помощью user.delete(), а затем воссоздание будет автоматически иметь новый UID – AndroidBeginner
Да, вы правы, что сработает. Но что произойдет, если вы хотите снова войти в систему как старый пользователь (т. Е. Сохранить обмен пользователями)? Я не хочу удалять учетную запись, потому что я храню данные для каждого пользователя. – Richard
Извините, непонятно. Не могли бы вы использовать новый Firebase Auth API для входа в Google? (Https://firebase.google.com/docs/auth/web/google-signin). Если вам нужна поддержка Cordova, вы можете использовать плагин OAuth (например, https://github.com/nraboy/ng-cordova-oauth), а затем вызвать signInWithCredential() с помощью токена доступа. –