reactjs - 使用 Firebase 和匿名用户设置 Stream 活动供稿的推荐方法是什么?
问题描述
我想显示一个全球活动提要和对网站访问者的反应计数(没有用户帐户)。我的应用正在使用 Firebase 和 React。
我想拥有的:
- 显示一个全局提要(我将通过在每个活动中添加带有“to:”字段的活动来做到这一点)并在起始页上显示它(到目前为止没有创建用户帐户,只读)
- 显示每个活动的点赞数(只读)
- 只要有人点击关注或喜欢按钮,我就会要求用户登录并创建一个帐户。这一步之后的过程对我来说很简单。我将使用 Firebase 函数来创建身份验证令牌并使用客户端 React 组件来显示提要和反应。
我没有找到一种解决方案来显示全局提要和对没有用户身份验证令牌的访问者的反应计数。
我想到的一些解决方法:
- 一种方法是为每个网站访问者创建一个匿名 Firebase 用户和 Stream auth 令牌。一旦用户进行交互,我会要求他创建他的帐户并使用 Firebase 迁移过程升级用户的帐户。从安全角度来看,这是非常安全的,但我会在后端有很多匿名用户。
- 另一种方法是创建一个全局用户并使用身份验证令牌来显示提要和喜欢。只要有人进行交互,我就会要求用户登录。由于活动源产品没有可用的只读流用户帐户,这可能会导致安全问题。
您有其他解决方案吗?
解决方案
我找到了一种使用 JWTScopeToken 辅助函数为客户端创建只读令牌的方法。(提供广泛的只读令牌)
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)
使用此令牌可以向新访问者显示用户和全局提要。我不必再创建匿名用户了。
推荐阅读
- cmake - 如何使用 cmake 构建大型库?
- c++ - 如何展平嵌套的 std::optional?
- javascript - 别名表名 - Postgres 数据库?
- python - 安装 geopandas 时遇到问题
- javascript - 如何使用 Formidable 和 React Js 将多个图像文件上传到服务器
- xaml - TabViewItem 错误属性内容不支持 MainPage 类型的值
- ng-bootstrap - NgbDropdown 内容对于屏幕来说太大了
- reactjs - 条件路由在 React Router 中不起作用
- php - 如何在 laravel 中获得不重叠的帖子?
- core-data - @Binding - 将 FetchedResults、单个实体传递给 Core Data + SwiftUI 中的子视图