Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在I';我已登录_Javascript_Firebase_Firebase Authentication - Fatal编程技术网

Javascript 在I';我已登录

Javascript 在I';我已登录,javascript,firebase,firebase-authentication,Javascript,Firebase,Firebase Authentication,我正在使用Angular 8和 在我的自定义网站上,具有管理员权限的用户可以为其他人创建帐户 为此,我读到我需要: 创建第二个身份验证引用并使用该引用创建用户。 原因:如果我们使用默认的身份验证引用,当createUserWithEmailAndPassword()方法创建新用户时 用户将自动登录,覆盖当前会话( 在我们的自定义网站上登录的用户) 我试过: async createUserWithEmailAndPassword(email: string, password: string

我正在使用Angular 8和

在我的自定义网站上,具有管理员权限的用户可以为其他人创建帐户

为此,我读到我需要:

创建第二个身份验证引用并使用该引用创建用户。 原因:如果我们使用默认的身份验证引用,当
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();
    }
  }
async createUserWithEmailAndPassword(电子邮件:字符串,密码:字符串):承诺{
//1.新的身份验证会话
让secondaryApp=firebase.initializeApp(environment.firebaseConfig,'Secondary');
//2.创建帐户
const user=wait secondary app.auth().createUserWithEmailAndPassword(电子邮件,密码);
//3.注销创建的用户
等待secondaryApp.auth().signOut();
//4.将身份验证会话设为空,以确保已删除该会话
secondaryApp=null;
if(user.user.uid){
//用户创建
返回Promise.resolve(user.user.uid);
}否则{
//错误
返回承诺。拒绝();
}
}
收到错误(在我第二次调用该方法时发生):

Firebase错误:Firebase:名为“Secondary”的Firebase应用程序已存在 (应用程序/重复应用程序)

我的想法/步骤是:

  • 创建新的身份验证会话
  • 创建用户
  • 注销创建的用户
  • 删除创建的身份验证会话
  • 一切就绪,随时可以创建新帐户
  • 我做错了什么


    我的目标是能够在登录自定义网站时创建帐户。

    一个有根据的猜测是,您第二次调用自己的
    createUserWithEmailAndPassword方法时会收到该错误消息。原因是您在上次通话中已经创建了一个名为
    Secondary
    的应用程序,并且没有删除该应用程序

    最简单的解决方案是在创建应用程序之前检查辅助应用程序是否已经存在

    let secondaryApp = firebase.app("Secondary");
    if (!secondaryApp) {
      secondaryApp = firebase.initializeApp(environment.firebaseConfig, 'Secondary');
    }
    

    一般来说,如果您使用Firebase Admin SDK调用后端来创建帐户,而不是试图以非预期的方式操作客户端,那么这将更容易@你好,谢谢你回答我的问题。因此,换句话说,我可以使用
    firebase admin
    创建一个云函数来使用
    createUser
    方法吗?这是正确的方法吗?再次感谢。如果你想要并且有时间的话,把建议作为答案添加进去,这样我也可以选择它作为未来用户的解决方案。你完全可以这样做。但是,它并没有真正回答您的特定问题,即关于客户端SDK如何工作的问题。但是我会强烈地考虑使用云函数和管理员SDK。