Actor.idの変更に対する実装ごとの振る舞いの違い
lacolaco.icon 一度作成してFediverseの海に出たActorが、途中で id フィールドのURIを変更したらどうなるか試した結果 収穫
Actor.id は Fediverse内で一意であると同時に、不変であると考えていたほうがよい
検証メモ
lacolaco.icon Misskey: リモートユーザー情報の更新ができずエラーになった(2023-07-09)
元のURIからはHTMLが返されるようにした
code:error
Endpoint: federation/update-remote-user
Info: {"e":{"message":"Unexpected token < in JSON at position 0","code":"SyntaxError","i
d":"df02bca5-6940-43bd-b3cc-ac742cbfa85e"}}
WebFingerからは変更後の新しいURLを返却しているが、一度連合を通してリモートユーザー情報がDBに保存されると、その後はDBに保存された id のURLへ問い合わせを行い続けているように見える。(ソースコードを読めばわかりそう)
エラーになったあと、id を元に戻して Actor のJSONを返すように戻すとまた正常にリモートユーザー情報が更新できるようになった。