长话短说,我熟悉Firebase,我需要将这个云功能称为"ext-auth-chat-getStreamUserToken“。触发器是对:https://europe-west2-FIREBASE-USER-INFO/ext-auth-chat-getStreamUserToken的HTTPS请求。
上下文:我使用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上安装了“使用流聊天进行身份验证”扩展。这将创建各种云功能,包括在firebase上创建新用户时在Stream上创建新用户的功能。
我唯一需要做的就是修改这段代码,将firebase与流聊天集成在一起:
await chatClient.connectUser(user, chatClient.devToken(user.id))
我可以对用户对象进行排序。但是如何调用云函数来获取令牌呢?
发布于 2022-09-11 11:10:33
根据源代码的getStreamUserToken
云函数(链接在扩展的产品页面上),它是一个可调用云函数。
export const getStreamUserToken = functions.handler.https.onCall((data, context) => { /* ... */ });
调用云函数可以使用Firebase客户端SDK完成,如示例在这里的医生所记录的那样。由于云函数驻留在europe-west2
区域(而不是默认的us-central1
区域),因此在获取建筑商类实例时需要指定它。
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();
以同样的方式调用revoke函数。
const revokeStreamUserToken = functions.callable("ext-auth-chat-revokeStreamUserToken");
await revokeStreamUserToken();
https://stackoverflow.com/questions/73675475
复制相似问题