标签: mastodon

Activitypub 和 Mastodon,如何获得演员?

问题

我目前正在尝试在我的服务器上实现 ActivityPub 以使其与乳齿象互操作。我在试图从另一个乳齿象实例中检索演员时陷入困境。参与者包含收件箱、发件箱和用于验证参与者签名的请求的公钥等内容。

似乎要获取演员,我需要发送签名的获取请求。虽然我知道如何签署请求,但我遇到了先有鸡还是先有蛋的问题,因为代表参与者的 json-ld 文档将包含用于验证来自该参与者的请求的公钥。因此,如果我要使用我的密钥签署请求,那么为了验证密钥,我尝试检索其参与者的实例也必须检索我的公钥,从而检索我的参与者。但如果它这样做了,并且我还检查了签名,那么我需要让我首先尝试访问的演员获得它的公钥才能这样做。

怎么解决这个先有鸡还是先有蛋的情况呢?为什么乳齿象没有遇到同样的问题,它们的做法有所不同吗?

到目前为止我尝试过的

我已经在一些现有的乳齿象实例上注册了一个帐户。我可以使用 webfinger 查找演员的 URL:

curl https://awoo.space/.well-known/webfinger?resource=acct:DPA@awoo.space | jq
Run Code Online (Sandbox Code Playgroud)
{
  "subject": "acct:DPA@awoo.space",
  "aliases": [
    "https://awoo.space/@DPA",
    "https://awoo.space/users/DPA"
  ],
  "links": [
    {
      "rel": "http://webfinger.net/rel/profile-page",
      "type": "text/html",
      "href": "https://awoo.space/@DPA"
    },
    {
      "rel": "self",
      "type": "application/activity+json",
      "href": "https://awoo.space/users/DPA"
    },
    {
      "rel": "http://ostatus.org/schema/1.0/subscribe",
      "template": "https://awoo.space/authorize_interaction?uri={uri}"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

因此,对于该帐户,演员 url 是https://awoo.space/users/DPA。但如果我尝试获取演员对象:

curl -H 'Accept: application/ld+json; profile="https://www.w3.org/ns/activitystreams"' https://awoo.space/users/DPA
Run Code Online (Sandbox Code Playgroud)

我收到错误:401 Request not signed,。

说实话,我不明白为什么需要签署该请求。我在网上找到的示例似乎并非如此,但在这种情况下,由于某种原因它需要签名,我想正确处理它。

activity-streams activitypub mastodon

7
推荐指数
1
解决办法
782
查看次数

如何获取 Mastodon API 中的所有嘟嘟声并将其删除?

如何获取我发出过的所有嘟嘟ID?

我想删除我在 Mastodon 的所有嘟嘟声(状态帖子),但无法获取所有嘟嘟声。

如果我删除我的帐户会更容易,尽管我想保留我的帐户并清理我的新闻机器人造成的所有混乱。

目前看来,Mastodon 还没有将删除所有嘟嘟声作为标准功能。

因此,我尝试使用Mastodon API递归删除它们,如下所示,但无法获取所有要删除的 Toot ID(状态 ID)。

  1. GET来自端点的嘟嘟 ID /api/v1/timelines/home

    curl -X GET --header 'Authorization: Bearer <ACCESS_TOKEN>' -sS https://sample.com/api/v1/timelines/home

  2. DELETE在端点处发出嘟嘟声/api/v1/statuses,并带有我得到的嘟嘟 ID。

    curl -X DELETE --header 'Authorization: Bearer <ACCESS_TOKEN>' -sS https://sample.com/api/v1/statuses/<Toot ID>

  3. 循环 2,然后循环 1,直到为空。

它清理了家庭时间线。但公开资料页面上留下了许多嘟嘟声。我还尝试从 ATOM feed 获取 ID,但没有帮助。

我所需要的只是我发出的状态 ID 列表。有任何想法吗?


目前的结论

根据@unarist的建议

API端点

https://sample.com/api/v1/accounts/<account id>/statuses

GET /api/v1/accounts/:id/statuses

将进行抓取。

不过,有3点需要注意:

  1. 默认情况下,此 API 方法仅提供 20 个状态(嘟嘟信息),最多 40 个。
  2. 授权的 API 请求限制为 300 个请求/5 …

api microblogging mastodon

1
推荐指数
1
解决办法
1818
查看次数