投稿を削除する
Activity:Delete
配送(公開)済みの投稿を削除するためのActivityを配送先サーバーに投げます。
POSTリクエストを投げる時はminetype
Content-type:application/activity+json
が必須です。
- 削除したい投稿のIDを指定して削除文を作る
- 削除文をDeleteのActivityに入れて配送する
- 削除したい投稿が登録されているデータベースから削除する
削除するのは以下の投稿
{
"@context": ["https://www.w3.org/ns/activitystreams", {"Hashtag": "as:Hashtag"}],
"type": "Create",
"id": "https://tokoroten.doncha.net/t2aki/activity/03881-20250208",
"url": "https://tokoroten.doncha.net/t2aki/activity/03881-20250208",
"published": "2025-02-07T23:53:01Z",
"actor": "https://tokoroten.doncha.net/t2aki",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://tokoroten.doncha.net/t2aki/followers"],
"object": {
"type": "Note",
"id": "https://tokoroten.doncha.net/t2aki/items/03881-20250208",
"url": "https://tokoroten.doncha.net/t2aki/items/03881-20250208",
"published": "2025-02-07T23:53:01Z",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://tokoroten.doncha.net/t2aki/followers"],
"attributedTo": "https://tokoroten.doncha.net/t2aki",
"content": "これは削除する投稿"
}
}
投稿したNoteのid
「https://tokoroten.doncha.net/t2aki/items/03881-20250208」
を指定して削除文を作ります。
(「Create」の「id」ではなく、Createの中にあるobjectの「Note」の「id」が対象)
- 削除文のJSONは3つの要素だけ
- 削除対象のNoteのID
- 削除対象のNoteのURL
- typeは「Tombstone」(墓石)
対象のTypeをNoteからTombstoneにする=削除、という理解で大丈夫っぽい。
{
"id":"https://tokoroten.doncha.net/t2aki/items/03881-20250208",
"url":"https://tokoroten.doncha.net/t2aki/items/03881-20250208",
"type":"Tombstone"
}
削除文を「Type」「Delete」のActivityに入れて配送します。
「Delete」というtypeは「Deleteします」ということで「Create」と同じく動詞属性みたいなもの、でしょうか。
- DeleteのJSON
- idは一意だったら問題はないはず
- actorは送信者(自分)のユーザーアカウント名
- toやccは配送先(Publicとfollowersを指定すれば大丈夫、かな)
{
"@context": ["https://www.w3.org/ns/activitystreams", {"Hashtag": "as:Hashtag"}],
"type":"Delete",
"id":"https://tokoroten.doncha.net/t2aki/items/03881-20250208#delete",
"actor":"https://tokoroten.doncha.net/t2aki",
"to":["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://tokoroten.doncha.net/t2aki/followers"],
"object":{
"id":"https://tokoroten.doncha.net/t2aki/items/03881-20250208",
"url":"https://tokoroten.doncha.net/t2aki/items/03881-20250208",
"type":"Tombstone"
}
}
自分のところにDeleteのActivityが飛んできたら、該当する投稿を削除する。
ローカルの投稿は確実に削除できるけど、リモートサーバーに飛んだ投稿が確実に削除できるとは限りません。
お相手サーバーに確実にActivityが配送される保証はないので、CreateでNoteは飛んで投稿が受け付けられても、Deleteの時にサーバー不調などで受け付けられなかったら削除のActivityが届かないケースもあります。
あと、たぶん、だけど。
ドメインブロックというのがあって、それまでやりとりのあったサーバーにサーバーごとブロックされると、ブロック以前に飛んだ投稿は削除しようがない、ような気がする。
放流してしまった投稿を確実に削除する方法はないということに留意しておきたいです。
[2025-02-10 10:24:25] v1.0.0

