【发布时间】:2020-05-05 19:45:14
【问题描述】:
我正在尝试将 Firebase 身份验证添加到我的 Angular 应用程序中。
这是我AuthService中的signUp()方法:
signUp(email: string, password: string, name: string) {
const userCredential = from(
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(
(data) => {
let newUser: firebase.User = data.user;
newUser.updateProfile({
displayName: name,
photoURL: ''
}).then(() => {
firebase.firestore().collection('users').add({
userId: firebase.auth().currentUser.uid,
userName: firebase.auth().currentUser.displayName,
created: firebase.firestore.FieldValue.serverTimestamp()
});
});
Plugins.Storage.set({
key: 'userCredential',
value: newUser.uid
});
}
)
);
return userCredential;
}
通过这种方法,我可以使用 Capacitor 的 Storage 插件将newUser.uid 存储在本地存储中。
但我希望能够存储与下面存储的信息相同的信息(即localId、email、idToken 和expirationTime:
login(email: string, password: string) {
return this.http.post<AuthResponseData>(
`firebaseUrl/v1/accounts:signInWithPassword?key=${
environment.firebaseAPIKey
}`,
{ email: email, password: password, returnSecureToken: true }
).pipe(tap(this.setUserData.bind(this)));
}
private setUserData(userData: AuthResponseData) {
const expirationTime = new Date(
new Date().getTime() + (+userData.expiresIn * 1000)
);
this._user.next(
new User(
userData.localId,
userData.email,
userData.idToken,
expirationTime
)
);
this.storeAuthData(userData.localId, userData.idToken, expirationTime.toISOString(), userData.email);
}
private storeAuthData(userId: string, token: string, tokenExpirationDate: string, email: string) {
const data = JSON.stringify({
userId: userId,
token: token,
tokenExpirationDate: tokenExpirationDate,
email: email
});
Plugins.Storage.set({ key: 'authData', value: data });
}
有人可以告诉我如何在我的signUp() 方法中获取这 4 个值吗?
【问题讨论】:
标签: angular typescript firebase firebase-authentication angular-canload