繁体   English   中英

如何从 React stream 聊天应用程序调用 Firebase 云 function

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM