【问题标题】:Authenticate users between firebase apps在 Firebase 应用之间对用户进行身份验证
【发布时间】:2020-12-14 10:55:30
【问题描述】:

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

根据我之前关于多个 firebase 应用 here 的问题,我最终在我的项目中拥有多个 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',
});

用户使用电子邮件和密码登录,使用上述firebase.auth() 中的signInWithEmailAndPassword 方法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;
};

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

有没有一种方法可以将 currentUser 从 DEFAULT 应用实例验证到第二个而不要求提供凭据?

【问题讨论】:

    标签: javascript reactjs firebase firebase-authentication


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。没有其他的身份验证方法吗?我看到有一个令牌登录方法我不能发出一个对身份验证有效的令牌吗?在前端存储密码似乎不太正统
    • 如果您想要自定义令牌登录,您需要涉及一个后端,该后端使用 Firebase Admin SDK 为用户颁发令牌。因此,您的客户端应用程序将需要调用此后端来请求自定义令牌,并使用该令牌登录到其他应用程序实例。相关文档在这里:firebase.google.com/docs/auth/admin/create-custom-tokens
    • 是的,这似乎是解决手头问题的更好方法
    猜你喜欢
    • 2017-03-11
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多