ActivityPubの動作概要
ここではActivityPubを簡単に理解するために3つに分けてサーバーがどのような動作をしているか説明します。MastodonやMisskey、Meta社開発のThreadsなどが相互にやりとりしてあたかもひとつのSNSであるかのようにふるまうことができるようになったのはこのActivityPubのおかげ。サーバーソフトウェアによって動作が多少異なる場合があります。
公開:サーバーの情報を得る
/.well-known/nodeinfo
にはnodeinfoバージョンとリンクが示されている。示されたバージョンのリンク先(ここでは2.0)へアクセスする。
/nodeinfo/2.0
にはversion、software、protocols、services、usage、metadata、openRegistrationsなどが記載されている。中でもmetadataにはnodeName、nodeDescription、maintainerなどサーバーの重要な情報が記述されている。
アカウントを見つける
/.well-known/host-meta
にはxml形式でwebfingerのリンク先が示されている。
例)https://ivecolor.com/.well-known/webfinger?resource={uri}
。このURLの{uri}
の部分に検索したいアカウント(FediverseId)を入れアクセスする。
@kisana_me
であれば、https://ivecolor.com/.well-known/webfinger?resource=acct:kisana_me
である。
.well-known/webfinger?resource={uri}
にはアカウントのウェブページやデータ返却用URLが示されている。データ返却用URL例)https://ivecolor.com/users/kisana_me
。
データ返却用URLはサーバーソフトウェアの実装によって多種多様であるが、アクセスすると、id、name、summary、iconのURL、publicKey、アクティビティinbox;outbox用のURL、フォロー関係表示用URLなどが記述されている。
アカウントのフォロー
アカウントのデータにはinboxのurlがあります。
そのinboxにfollowアクティビティを送ると自分のinboxに送ったfollowアクティビティをacceptアクティビティあるいはrejectアクティビティでラップされて送信されてきます。
基本はacceptがすぐ飛んできますが、相手が鍵垢だとそのユーザーがフォローを承認するのか破棄するのか選択するまで結果が返ってこないこともあります。
以上がActivityPubの大まかな流れです。これじゃわかりずらいと思うので後日実際のコードを交えて説明し直します。
コメントを残す