gpt4 book ai didi

firebase - Chrome 扩展程序如何在用户无需登录两次的情况下从 Firebase 网络应用程序获取用户凭据?

转载 作者:行者123 更新时间:2023-12-05 06:07:06 26 4
gpt4 key购买 nike

我有一个 Firebase 网络应用程序和一个 Chrome 扩展程序 - 用户将使用 Chrome 扩展程序来保存文章,稍后可以从他们的网络应用程序中阅读。

对于网络应用程序,我使用 Firebase Auth。但是我不确定如何将用户 token 或 ID 传递给 Chrome 扩展,这样用户就不需要登录两次。

我读过这个question ,但我不清楚如何从网络应用程序向 Chrome 扩展程序发送 token 。

谢谢!

最佳答案

this github post 中有详细的示例答案

简图如下:

  1. 创建生成自定义 Firebase token 的云函数
  2. 在 Web 应用中登录后从云函数请求自定义 token
  3. 使用 chrome API 向扩展程序发送消息
  4. 在消息的扩展中使用 token 登录到 firebase
  5. 在扩展中监听 firebase 身份验证状态更改以注销

来自帖子的详细信息:

Firebase 功能/授权服务器

在 Firebase 函数(或自定义服务器)中使用 firebase 函数 createCustomToken 处理 token 创建

const admin = require('firebase-admin')
const functions = require('firebase-functions')

admin.initializeApp()

module.exports functions.https.onCall(uid =>
admin.auth().createCustomToken(uid)
)

网络应用

登录成功后,通过登录用户的uid向服务器请求自定义Token

firebase.functions().httpsCallable('createToken')(uid)

然后发送到chrome扩展

chrome.runtime.sendMessage(extensionID, token)

扩展

最后在收到消息时在扩展程序中,使用自定义 token 通过 firebase 记录用户

firebase.initializeApp(firebaseConfig)

firebase.auth().onAuthStateChanged(function (user) {
console.log(
'User state change detected from the Background script of the Chrome Extension:',
user
)
})

chrome.runtime.onMessageExternal.addListener(
(token, sender, sendResponse) => {
firebase
.auth()
.signInWithCustomToken(token)
.catch((error) => {
console.log('error', error)
})
return true
}
)

您的后台脚本将记录 authStateChanged 事件,您可以在其中看到身份验证不再是 isAnonymous,并且电子邮件属性是通过您的应用登录的用户之一!

关于firebase - Chrome 扩展程序如何在用户无需登录两次的情况下从 Firebase 网络应用程序获取用户凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65581568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com