我正在使用Angular 8和AngularFire做一个Web应用程序。
在我的自定义网站上,具有管理员权限的用户可以为其他人创建帐户。
为此,我已阅读到以下信息:
创建第二个身份验证参考,并使用该参考来创建用户。 原因:如果我们使用默认的身份验证引用,则在
createUserWithEmailAndPassword()
方法创建新用户时, 用户会自动登录,从而覆盖我们当前的会话( 登录我们的自定义网站上的用户)。
我尝试过:
async createUserWithEmailAndPassword(email: string, password: string): Promise<string> {
// 1. A new auth session
let secondaryApp = firebase.initializeApp(environment.firebaseConfig, 'Secondary');
// 2. Create the account
const user = await secondaryApp.auth().createUserWithEmailAndPassword(email, password);
// 3. Sign out the user created
await secondaryApp.auth().signOut();
// 4. Make the auth session null to ensure that it's deleted
secondaryApp = null;
if (user.user.uid) {
// User created
return Promise.resolve(user.user.uid);
} else {
// Error
return Promise.reject();
}
}
收到错误(在我第二次调用该方法时发生):
FirebaseError:Firebase:名为“ Secondary”的Firebase应用已存在 (应用程序/重复应用程序)。
我的想法/步骤是:
我做错了什么?
我的目标是在登录自定义网站时能够创建帐户。
答案 0 :(得分:0)
一个有根据的猜测是,您第二次调用自己的createUserWithEmailAndPassword
方法时会收到该错误消息。这样做的原因是您在上一个调用中已经创建了一个名为Secondary
的应用,并且没有删除该应用。
最简单的解决方案是在创建Secondary
应用之前先检查它是否存在。
let secondaryApp = firebase.app("Secondary");
if (!secondaryApp) {
secondaryApp = firebase.initializeApp(environment.firebaseConfig, 'Secondary');
}