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

使用Stream Feeds无法上传图片的问题排查求助

排查GetStream Feeds图片上传时"token contains an invalid number of segments"错误

问题背景

我正在使用GetStream Feeds及stream_feed_flutter_core开发类Instagram应用,目前可向动态流添加活动、上传文件,但无法上传图片。

客户端与用户配置代码

final client = StreamFeedClient("apiKey", logLevel: Level.INFO);
final currentUser = await client.setUser(
  User(
    id: user2Id, data: {"name": user1Name, "profile_image": user2Image}),
  Token(token_2)
);

图片上传逻辑

  1. 从相册选择图片得到XFile类型的pickedFile
  2. 上传方法:
uploadImage() async{
  var imageUrl = await context.feedClient.images.upload(AttachmentFile(path: pickedFile.path));
}

API返回错误

{
  "detail":"token contains an invalid number of segments",
  "status_code":403,
  "code":17,
  "exception":"NotAllowedException",
  "duration":"0.00ms",
  "more_info":"https://getstream.io/docs/api_error_responses"
}

排查步骤

  • 检查Token格式:GetStream用户Token为JWT格式,必须是.分隔的3段字符串(Header.Payload.Signature)。确认token_2是否符合该格式,无拼写错误、字符截断或编码异常。
  • 验证Token生成逻辑:用户Token必须通过后端服务用GetStream的Secret Key生成,禁止客户端直接生成或硬编码。确保后端生成时使用了正确的user2Id,签名算法为HS256。
  • 确认客户端Token关联状态:调用client.setUser后,打印context.feedClient.currentUserToken,确认其值与后端生成的Token完全一致,无意外覆盖或重置。
  • 对比文件与图片上传的Token差异:既然文件上传正常,检查两类上传操作使用的Token是否一致,排查图片上传逻辑中是否存在Token篡改的情况。
  • 验证AttachmentFile参数:确认pickedFile.path是图片的真实本地路径,且应用已获取iOS相册权限、Android存储权限。
  • 用Dashboard生成的Token测试:临时替换token_2为GetStream Dashboard中生成的对应用户Token,若能正常上传,说明问题出在后端Token生成逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:35:14