Google chrome extension 如何将firebase webapp与chrome扩展进行通信以避免双重登录

Google chrome extension 如何将firebase webapp与chrome扩展进行通信以避免双重登录,google-chrome-extension,google-cloud-firestore,firebase-authentication,Google Chrome Extension,Google Cloud Firestore,Firebase Authentication,我在创建外部网页和chrome扩展之间的通信时遇到问题。我想我需要这样的东西 用户尝试使用Firebase Auth(使用google/Fb/email-password providers)在“example.com”上使用登录表单登录 如果用户成功登录,则会向chrome扩展发送相同的凭据 分机使用已获取的凭据调用signInWithCredential,然后尝试再次登录 如果一切正常,则用户可以使用上下文脚本使用firebase dB 但这是一个正确的方法吗?将凭据(例如电子邮件/密码、令

我在创建外部网页和chrome扩展之间的通信时遇到问题。我想我需要这样的东西

  • 用户尝试使用Firebase Auth(使用google/Fb/email-password providers)在“example.com”上使用登录表单登录
  • 如果用户成功登录,则会向chrome扩展发送相同的凭据
  • 分机使用已获取的凭据调用signInWithCredential,然后尝试再次登录
  • 如果一切正常,则用户可以使用上下文脚本使用firebase dB
  • 但这是一个正确的方法吗?将凭据(例如电子邮件/密码、令牌)从网页发送到扩展是一种安全的解决方案(即使我使用带有扩展id的runtime.sendmages仅向特定扩展发送数据)


    目前,web应用和扩展身份验证是分开工作的。如果用户通过web应用登录,扩展不知道,反之亦然。我需要像Grammarly或moz.com这样的通信,用户通过网页登录,之后他不需要通过扩展登录来使用他的帐户。

    当然,你所需要做的就是传递授权令牌(我猜这在登录后存储在cookie中?)然后使用以下承载语法向您的服务发出请求

    当用户点击特定页面时,您可以通过将其写入chrome.storage(如果找不到令牌或令牌已过期,单击扩展可以将用户指向该页面),将其写入扩展,然后设置令牌:

    chrome.storage.sync.set({ access_token: sometoken }, function() {
      console.log('Value is set to ' + sometoken);
    });
    

    嘿@Przemo,我也在建,但我有一个疑问。网页和扩展是Firebase中的另一个应用程序吗?或者两者都在同一个环境下工作?注意:应用程序,而不是项目。嗨@Alex,在我的示例中,应用程序是sameThanks,用于回答您的问题。您是否使用下面的答案或其他解决方案解决了此问题?是的,您需要登录到web应用程序,然后在函数中调用admin.auth().createCustomToken,并返回令牌作为响应,然后将该令牌发送到您的扩展。最后,调用signInWithCustomToken()。就是这样:)有两个选项似乎比在对类似问题的回答中描述的发行自定义令牌更安全: