You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取非当前用户Feed关注者列表时权限错误的解决方法

解决获取非当前用户Feed关注者时的权限错误问题

你遇到的这个You don't have permission错误,其实是Stream Feed默认权限机制导致的——默认情况下,用户的Feed关注者列表属于私有数据,只有Feed所有者本身或者拥有特定权限的角色才能访问,而你用客户端SDK去请求非登录用户(user1)的关注者列表,自然会被权限拦截。

先把你的代码和触发的问题再明确下:
你的实现代码:

let feed = FlatFeed.init(FeedId.init(feedSlug: "user", userId: "user1"))
feed.followers(completion: { (result) in
    if let followers = try? result.get() {
        // 处理关注者数据
    } else if let error = result.error {
        print("get error in fetching followers: \(error.localizedDescription)")
    }
})

触发的错误提示:You don't have permission

下面是几个可行的解决方向:

  • 调整Feed的权限配置
    Stream的权限系统默认对user类型Feed的followers:read操作只开放给Feed所有者。你可以通过Stream Dashboard修改权限规则:

    1. 登录你的Stream Dashboard,找到对应的应用
    2. 进入「Feeds」页面,选择user类型的Feed
    3. 在权限设置里,找到followers:read的规则,将其从owner调整为authenticated(允许所有登录用户访问),或者设置为特定用户/角色
      注意:这个操作会让该类型Feed的关注者列表对符合条件的用户公开,要先确认业务上是否允许这样做。
  • 通过服务器端API中转获取
    如果不想调整全局权限(比如关注者数据属于用户隐私),更安全的方式是在你的后端服务中调用Stream的服务器端API来获取user1的关注者,再把结果返回给客户端。服务器端API拥有更高的权限,不受客户端的权限限制。
    举个Node.js的服务器端示例:

    const stream = require('getstream');
    // 用你的Stream密钥初始化客户端(服务器端才用密钥,客户端只存API Key)
    const client = stream.connect('YOUR_API_KEY', 'YOUR_API_SECRET', 'YOUR_APP_ID');
    
    async function fetchUserFollowers(userId) {
      try {
        const userFeed = client.feed('user', userId);
        const followersData = await userFeed.getFollowers();
        return followersData;
      } catch (err) {
        console.error('Failed to fetch followers:', err);
        throw err;
      }
    }
    

    之后客户端调用你自己的后端接口来获取数据,而不是直接调用Stream的客户端SDK。

  • 确认业务需求的合理性
    最后再确认下:你的业务是否真的需要让普通客户端用户查看user1的关注者列表?如果这部分数据是用户隐私,那应该严格限制访问,只通过服务器端做受控的展示;如果是公开数据,调整权限是更直接的方案。

内容的提问来源于stack exchange,提问作者Aashish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:32:42