【发布时间】:2020-06-28 08:37:07
【问题描述】:
我正在尝试使用 Firebase 身份验证设置 Angular 应用程序。 我现在的目标是在应用初始化期间获取客户端用户的令牌和数据。
在 App 模块中,我将 AuthServise 设置为 APP_INITIALIZER
providers: [
AuthService,
{
provide: APP_INITIALIZER,
useFactory:loadAuthService ,
deps: [AuthService],
multi: true
},
export function loadAuthService(authService: AuthService): Function
{
return () => { return authService.load() };
}
我的带有“加载”功能的 AuthService 看起来像这样
private _token: BehaviorSubject<string> = new BehaviorSubject<string>(null);
private _fUser: BehaviorSubject<firebase.User> = new BehaviorSubject<firebase.User>(null);
// Returns true when user is looged in localStorage of the client
get isLoggedIn(): boolean {
return (this.localStorageUser !== null) ? true : false;
}
get localStorageUser(): firebase.User {
return JSON.parse(localStorage.getItem('user'));
}
get token(): string {
return this._token.getValue();
}
set token(token: string) {
this._token.next(token);
}
get fUser(): firebase.User {
return this._fUser.getValue();
}
set fUser(fUser: firebase.User){
this._fUser.next(fUser);
}
/**
* Called and waited on during app initialiation.
* Initializing app with auth service
*/
public async load()
{
console.log('Initializing app with auth service');
//Check whether user is in client's local storage
if (this.isLoggedIn){
this.fUser = this.localStorageUser;
const userRef: AngularFirestoreDocument<any> = this.afs.doc(`users/${this.fUser.uid}`);
try {
this.token = await this.fUser.getIdToken();
} catch (error) {
console.log('getting token error', error);
}
}
}
我不知道为什么我收到错误“this.fUser.getIdToken is not a function” 请问有什么建议吗?谢谢转发。
【问题讨论】:
标签: angular firebase firebase-authentication