在 Firebase 应用之间对用户进行身份验证

IT技术 javascript reactjs firebase firebase-authentication
2021-05-16 15:27:44

我有一个带有 Firebase 身份验证和存储的 React 应用程序

在我以前的多个火力点应用问题继在这里,我最终有多个firebase我的项目中应用。

我已DEFAULT初始化应用程序

firebase.initializeApp({
  apiKey: 'xxxxxxxxxxxxxxxxxxxx',
  authDomain: 'buckettest-xxxxx.firebaseapp.com',
  projectId: 'buckettest-xxxxx',
  storageBucket: 'buckettest-xxxxx.appspot.com',
  messagingSenderId: 'xxxxxxxxxxxxxxxxxxxx',
  appId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  measurementId: 'G-QZDBHEWHJ5',
});

用户使用电子邮件和密码登录,使用来自上述应用程序的signInWithEmailAndPassword方法firebase.auth()DEFAULT

在一个组件中,我创建了一个连接到不同存储桶的辅助 firebase 应用程序,如下所示

const createStoreApp = (bucket) => {
  const firebaseStoreApp = firebase.apps.length === 1
    ? firebase.initializeApp({
      storageBucket: bucket.name,
      apiKey: 'xxxxxxxxxxxxxxxxxxxx',
      authDomain: 'buckettest-xxxxx.firebaseapp.com',
      projectId: 'buckettest-xxxxx',
      storageBucket: 'buckettest-xxxxx.appspot.com',
      messagingSenderId: 'xxxxxxxxxxxxxxxxxxxx',
      appId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
      measurementId: 'G-QZDBHEWHJ5',
    }, 'storage')
    : firebase.apps[1];

  return firebaseStoreApp;
};

此解决方案完美运行,但存在此辅助应用程序上没有经过身份验证的用户的问题。

有没有办法在不要求凭据的情况下验证currentUserDEFAULT应用程序实例到第二个实例的身份?

1个回答

每个初始化的应用程序实例都有自己的身份验证。您不能让一个应用程序实例访问另一个应用程序以获取其身份验证数据。因此,您需要使用 Firebase Auth API 来让用户单独登录到第二个应用程序实例。由于您使用的是signInWithEmailAndPassword,听起来您必须将用户的凭据存储在某处,直到您能够根据需要initializeApp再次调用它们。