【问题标题】:What's the recommended approach to setup a Stream activity feed using Firebase and anonymous users?使用 Firebase 和匿名用户设置 Stream 活动供稿的推荐方法是什么?
【发布时间】:2021-06-11 05:23:04
【问题描述】:

我想显示全球活动供稿以及对网站访问者的反应计数(没有用户帐户)。我的应用正在使用 Firebase 和 React。

我想要什么:

  1. 显示一个全局提要(我将通过在每个活动中添加带有“to:”字段的活动来做到这一点)并将其显示在起始页上(目前没有创建用户帐户,只读)
  2. 显示每个活动的点赞数(只读)
  3. 只要有人点击关注或点赞按钮,我就会要求用户登录并创建一个帐户。这一步之后的过程对我来说很简单。我将使用 Firebase 函数来创建身份验证令牌并使用客户端 React 组件来显示提要和反应。

我没有找到解决方案来显示全局提要和对没有用户身份验证令牌的访问者的反应计数。

我想到的一些解决方法:

  • 一种方法是为每个网站访问者创建一个匿名 Firebase 用户和 Stream auth 令牌。一旦用户进行交互,我会要求他创建他的帐户并使用 Firebase 迁移过程升级用户的帐户。从安全角度来看,这是非常安全的,但我会在后端有很多匿名用户。
  • 另一种方法是创建一个全局用户并使用身份验证令牌来显示提要和点赞。只要有人进行交互,我就会要求用户登录。由于活动源产品没有可用的只读 Stream 用户帐户,因此这可能会导致安全问题。

您有其他解决方案吗?

【问题讨论】:

  • 您是否考虑过在安全规则中使全局计数器(您希望每个人都能阅读)公开可读?
  • @FrankvanPuffelen 单个活动的反应(喜欢等)存储在 Stream 系统中。我可以将它们添加到 Firestore 并保护它们,没错。但这会导致另一个同步过程,我必须照顾和测试。好主意。

标签: reactjs firebase getstream-io


【解决方案1】:

我找到了一种使用 JWTScopeToken 辅助函数为客户端创建只读令牌的方法。 (Feed wide read-only tokens)

const streamSigner = require('getstream/lib/signing')
const apiSecret = '###APISECRET###'
const clientToken = streamSigner.JWTScopeToken(apiSecret, 'feed', 'read', {'feedId': '*', userId: "global"})
console.log("read-only client token for all feeds", clientToken)

使用此令牌可以向新访问者显示用户和全局供稿。我不必再创建匿名用户了。

【讨论】:

    猜你喜欢
    • 2023-03-06
    • 2010-11-05
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2015-06-17
    • 2016-05-28
    • 1970-01-01
    • 2019-09-15
    相关资源
    最近更新 更多