Уважаемое сообщество Stackoverflow,
Мы используем Firebase Auth для нашей аутентификации. Для этого мы предлагаем социальный вход с помощью Google и Facebook, а также вход по электронной почте и паролю. Следующий код показывает страницу регистрации для пользователей, которые хотят войти в систему с помощью электронной почты и пароля позже.
import { Router } from '@angular/router';
import { Component, OnInit } from '@angular/core';
import { AngularFireAuth } from '@angular/fire/auth';
import { auth } from 'firebase/app';
@Component({
selector: 'app-register',
templateUrl: './register.component.html',
styleUrls: ['./register.component.css']
})
export class RegisterComponent implements OnInit {
public emailAddress="";
public firstName="";
public lastName="";
public password="";
constructor(public afAuth: AngularFireAuth, private router: Router) {
}
ngOnInit() {
}
reset() {
this.emailAddress=""
this.password=""
this.firstName=""
this.lastName=""
}
register() {
let emailAddress = this.emailAddress
let password = this.password
let firstName = this.firstName
let lastName = this.lastName
this.reset()
console.log(emailAddress)
console.log(password)
auth().createUserWithEmailAndPassword(emailAddress, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
console.log(errorCode)
var errorMessage = error.message;
console.log(errorMessage)
// ...
});
}
}
Данные для электронной почты, пароля, firstName, lastName поступают из поля ввода, которое обменивается данными посредством связывания данных с компонентом.
<input type="email" [(ngModel)]="emailAddress" required>
Когда я пытаюсь получить отображаемое имя пользователя, оно работает только тогда, когда пользователь вошел в систему с помощью социального провайдера. Это очевидно, потому что он не установил его при регистрации по электронной почте и паролю. Теперь я хотел бы спросить вас, знает ли кто-нибудь, как сохранить firstName и lastName в firebase, чтобы можно было показать user.displayName.
<div *ngIf="afAuth.user | async as user; else notAuth">
Hello {{ user.displayName }}
</div>