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

Bluesky OAuth流程调用atproto.RepoCreateRecord()报InvalidToken: Bad token scope错误求助

Bluesky OAuth流程调用atproto.RepoCreateRecord()报InvalidToken: Bad token scope错误求助

看起来你已经顺利走完了OAuth授权的大部分流程——能跳转至Bluesky完成账号授权、回调后成功解析token,却卡在调用atproto.RepoCreateRecord()这一步,核心问题应该是获取token时请求的权限范围不足。

Bluesky的RepoCreateRecord()接口需要repo.write这个写入权限,你可以按下面的步骤排查解决:

  • 检查OAuth授权请求的scope参数:
    你发起授权跳转的URL里,是不是只传了repo.read这类只读权限?必须明确指定repo.write(如果需要多个权限,用空格分隔即可,比如repo.read repo.write)。示例授权URL应该类似:

    https://bsky.social/oauth/authorize?response_type=code&client_id=你的客户端ID&redirect_uri=你的回调地址&scope=repo.write
    
  • 验证token实际包含的权限:
    你可以在回调逻辑里解码token的JWT payload(用JWT解码工具或者代码解析),查看scope字段是否包含repo.write。如果没有,说明授权时的scope设置未生效,需要重新发起带正确scope的授权请求。

  • 核对bluesky-client-metadata.json配置:
    虽然你提到已经正确返回这个文件,但还是要确认里面的scopes数组包含repo.write,示例配置如下:

    {
      "clientName": "你的应用名称",
      "redirectUris": ["https://你的回调地址"],
      "scopes": ["repo.read", "repo.write"]
    }
    

    这个文件是Bluesky用来校验应用允许请求的权限范围,如果这里没添加repo.write,哪怕授权请求里传了该权限也会被限制。

最后,记得重新走一遍完整的OAuth授权流程,确保新获取的token带有repo.write权限,再调用atproto.RepoCreateRecord()应该就能解决这个错误了。

备注:内容来源于stack exchange,提问作者Mark Fletcher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:30:33