[英]How to call Firebase cloud function from React stream chat app
长话短说,我知道 Firebase,我需要将此云称为 function:“ext-auth-chat-getStreamUserToken”。 触发器是一个 HTTPS 请求:https://europe-west2-FIREBASE-USER-INFO/ext-auth-chat-getStreamUserToken
上下文:我使用 Stream.io 构建了一个消息传递应用程序,其中包含硬编码的用户数据和占位符令牌。 这是代码的关键部分:
useEffect(() => {
async function init() {
const chatClient = StreamChat.getInstance(apiKey)
await chatClient.connectUser(user, chatClient.devToken(user.id))
const channel = chatClient.channel("messaging", "war-chat", {
image:
"https://i.picsum.photos/id/1006/200/200.jpg?hmac=yv53p45TOMz8bY4ZXUVRMFMO0_6d5vGuoWtE2hJhxlc",
name: "Oli",
members: [user.id],
//chat description
})
await channel.watch()
setClient(chatClient)
}
init()
if (client) return () => client.disconnectUser()
}, [])
我已经在 Firebase 上安装了“使用 stream 聊天进行身份验证”扩展。 这会创建各种云功能,包括在 firebase 上创建新用户时在 Stream 上创建新用户的功能。
我唯一需要做的就是修改这段代码,将 firebase 与 stream 聊天集成:
await chatClient.connectUser(user, chatClient.devToken(user.id))
我可以对用户 object 进行排序。 但是如何调用云 function 来获取令牌?
根据getStreamUserToken
Cloud Function 的源代码(链接在扩展的产品页面上),它是一个Callable Cloud Function 。
export const getStreamUserToken = functions.handler.https.onCall((data, context) => { /* ... */ });
可以使用 Firebase 客户端 SDK 调用云 Function,如文档中的示例所述。 由于您的云 function 位于europe-west2
区域(而不是默认的us-central1
区域),因此您需要在获取Functions
builder class的实例时指定它:
import { getFunctions, httpsCallable } from "firebase/functions";
const functions = getFunctions(undefined, "europe-west2") // undefined is passed in so that the default app is used
const getStreamUserToken = functions.callable("ext-auth-chat-getStreamUserToken");
const streamUserToken = await getStreamUserToken();
撤销 function 调用方式相同。
const revokeStreamUserToken = functions.callable("ext-auth-chat-revokeStreamUserToken");
await revokeStreamUserToken();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.