在 ActivityPub 中,如何获取收件箱 URL?

Eva*_*rad 4 webfinger activitypub

我知道服务器通过 POST 到收件箱和发件箱进行通信。但是收件箱和发件箱的 URL 是什么?

Eva*_*rad 9

如何获取收件箱或发件箱 URL

URL 是实现服务器所说的任何内容。所以每个ActivityPub服务器的情况都是不同的。

参与者的收件箱和发件箱 URL在参与者的 JSON-LD 文档中定义:

{ 
  "@context": ["https://www.w3.org/ns/activitystreams",
               {"@language": "ja"}],
  "type": "Person",
  "id": "https://kenzoishii.example.com/",
  
  // Right here!
  "inbox": "https://kenzoishii.example.com/inbox.json",
  "outbox": "https://kenzoishii.example.com/feed.json",

  ...
}
Run Code Online (Sandbox Code Playgroud)

这也意味着收件箱和发件箱可以是特定于参与者的,而不仅仅是特定于服务器的。

如何获取演员 JSON

一些 ActivityPub 网站(例如 Mastodon)利用Webfinger来标准化可用于获取演员的 JSON-LD 文档的 URL:

/.well-known/webfinger?resource=acct:foo@example.org
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如果您想知道 的收件箱flaque@mastodon.social,您将首先查询webfinger:

GET https://mastodon.technology/.well-known/webfinger?resource=acct:flaque@mastodon.technology
Run Code Online (Sandbox Code Playgroud)

这会给你一个像这样的 JSON 对象:

{
  subject: "acct:Flaque@mastodon.technology",
  links: [
    {
      rel: "self",
      type: "application/activity+json",
      href: "https://mastodon.technology/users/Flaque"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这样href: https://mastodon.technology/users/Flaque,您就可以通过以下方式获取 JSON 表示形式:

https://mastodon.technology/users/Flaque.json
Run Code Online (Sandbox Code Playgroud)

(注意.json!)

然后,这将为您提供一个完整的 actor 对象,其中包括inboxoutbox

{
  "inbox": "https://mastodon.technology/users/Flaque/inbox",
  "outbox": "https://mastodon.technology/users/Flaque/outbox",
  ...
} 
Run Code Online (Sandbox Code Playgroud)