如何获取远程Toot的ID以调用Mastodon API实现跨实例转发?
获取Mastodon远程Toot的数据库ID
要拿到远程Toot对应的目标实例数据库ID,有几个直接可行的方案:
从页面DOM提取
当你在浏览器中打开远程Toot的详情页时,Mastodon会在状态元素(通常是带有status类的根div)上添加data-id属性,这个属性值就是该Toot在其所属实例的数据库ID。你可以用Chrome扩展的内容脚本直接读取这个属性:// 内容脚本中获取当前页面Toot的ID const statusElement = document.querySelector('.status'); const remoteTootId = statusElement?.dataset.id;通过Mastodon搜索API获取
如果无法直接访问页面DOM(比如从其他页面跳转过来),可以调用Mastodon的v2搜索接口,传入远程Toot的完整URL来定位状态:- 构造请求:
GET /api/v2/search,携带参数:q: 远程Toot的完整URL(比如https://example.social/@alice/123456789)type:statusesresolve:true(确保跨实例解析)
- 接口返回的
statuses数组中,第一条结果的id字段就是目标实例的数据库ID。
- 构造请求:
解析Toot的公开URL
多数Mastodon实例的Toot公开URL格式为https://<实例域名>/@<用户名>/<数据库ID>,你可以直接提取URL路径的最后一段作为ID。但要注意少数实例可能有自定义URL规则,所以这个方法不如前两个可靠,适合快速场景验证。
另外需要注意:调用目标实例的POST /api/v1/statuses/:id/reblog接口时,必须持有该实例的用户认证凭证(比如用户登录状态下的Cookie,或者OAuth令牌),否则会返回权限错误。
内容的提问来源于stack exchange,提问作者chx
相关产品推荐
相关产品推荐

