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

Prz*_*emo 6 google-chrome-extension firebase-authentication google-cloud-firestore

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

  1. 用户尝试使用 Firebase Auth(使用 google/Fb/email - 密码提供商)通过“example.com”上的登录表单登录
  2. 如果用户登录成功,则相同的凭据将发送到 chrome 扩展程序
  3. 扩展程序使用获取的凭据调用signInWithCredential,并尝试再次登录
  4. 如果一切正常,则用户可以使用 context_script 使用 firebase dB

但这是正确的方法吗?这是一种将凭据(例如电子邮件/密码、令牌)从网页发送到扩展程序的安全解决方案(即使我使用带有扩展程序 ID 的 runtime.sendMessage 仅将数据发送到特定扩展程序)?

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

小智 0

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

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

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