我目前正在尝试在我的服务器上实现 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,。
说实话,我不明白为什么需要签署该请求。我在网上找到的示例似乎并非如此,但在这种情况下,由于某种原因它需要签名,我想正确处理它。
我想删除我在 Mastodon 的所有嘟嘟声(状态帖子),但无法获取所有嘟嘟声。
如果我删除我的帐户会更容易,尽管我想保留我的帐户并清理我的新闻机器人造成的所有混乱。
目前看来,Mastodon 还没有将删除所有嘟嘟声作为标准功能。
因此,我尝试使用Mastodon API递归删除它们,如下所示,但无法获取所有要删除的 Toot ID(状态 ID)。
GET来自端点的嘟嘟 ID /api/v1/timelines/home。
curl -X GET --header 'Authorization: Bearer <ACCESS_TOKEN>' -sS https://sample.com/api/v1/timelines/home
DELETE在端点处发出嘟嘟声/api/v1/statuses,并带有我得到的嘟嘟 ID。
curl -X DELETE --header 'Authorization: Bearer <ACCESS_TOKEN>' -sS https://sample.com/api/v1/statuses/<Toot ID>
循环 2,然后循环 1,直到为空。
它清理了家庭时间线。但公开资料页面上留下了许多嘟嘟声。我还尝试从 ATOM feed 获取 ID,但没有帮助。
我所需要的只是我发出的状态 ID 列表。有任何想法吗?
根据@unarist的建议,
API端点
https://sample.com/api/v1/accounts/<account id>/statuses
将进行抓取。
不过,有3点需要注意: