フォローの流れ
あるアクターが別のインスタンスのアクターをフォローする場合、以下のような順にやりとりが行われる。
大まかな流れ
ActivityPubでは、ActorのINBOXにFollowアクティビティがPOSTされることでフォローが実施される。このINBOXのURLは既知ではないので、まずアクターの情報を取得し、その情報を元にINBOXを特定する。Followに対向してAcceptが送信される。 登場人物(ここでのみ使う用語です)
フォロワー
フォロー操作をした側。
フォロイー
フォローされる側。
ホスト解決
Webfinger
Actorの特定
フォロワーはwebfingerの結果を元にアクターエンドポイントにアクセスし、アクター情報を取得する。。
INBOXの特定
アクター情報にはinboxフィールドが含まれており、ここがフォロイー側のアクターのINBOXエンドポイントである。
Follow送信
フォロワーはフォロイーのINBOXにFollowアクティビティ(ここではFとおく)を送信する。 Follow受信
インターネットを通って、フォロイーはINBOXにFollowを受信する。
FollowにはActorのURLが含まれているため、フォロイーインスタンスはWebfingerを実施しなくてもよい。
適切なタイミングで、フォロイーインスタンスは、フォロイーの送信先としてこのActorを追加する。
Accept送信
フォロイーは、Followを承諾したことをフォロワーに通知しなければならない(この間フォロワーでは「フォロー承認待ち」のような表記になる)。
フォロワーがやったのと同様に、フォロイーはActorエンドポイントにアクセスしてフォロワーのINBOXのエンドポイントを特定する。
フォロイーはAcceptアクティビティをフォロワーのINBOXにPOSTする(AcceptのobjectフィールドにはFがそのまま入る)。このときも実装によってはHTTP Signaturesを実施する必要がある。 これらのやり取りが全て完了すると、フォロワーからみたフォロー処理は完了する。
hr.icon
windymelt.icon書いた。間違ってたら教えてください。
windymelt.icon 自分のOUTBOXにAcceptを追加するみたいなおもてなしが必要?
unarist.icon いらないと思う、というか Create Note 以外を転がしている実装あまりなさそう…