Расскажу вам про еще одну свою полу-доделанную штуку: https://fediread.link
Это читалка для (public и unlisted) тредов Федиверса, для которой я пытаюсь делать такой UI, чтобы длинные треды было удобно читать.
Кроме того, она не требует логиниться в какой-либо инстанс, потому что использует ActivityPub и публичные API серверов. Поэтому, например, можно делиться ссылками на тред:
https://fediread.link/#p=https://lor.sh/@iliazeus/110944643113501917
Главное: указывать URL нужно именно с того инстанса, которому принадлежит пост. Для мастодона это можно сделать опцией "скопировать URL поста" в трехточечном меню.
Из больших недоделок: не поддерживается Френдика и многие мелкие/самописные сервера. Да и вообще, пока я это писал, к своему сожалению понял, что — как _клиентский_ протокол — серверы довольно плохо поддерживают ActivityPub. В треде ниже я буду ругаться на конкретные вещи, с которыми я столкнулся.
Самая частая из проблем, на самом деле, даже не специфична для ActivityPub — криво настроенные Access-Control (CORS) заголовки.
Некоторые инстансы совсем не ставят заголовок https://http.dev/access-control-allow-origin на свой публичный API. Это автоматически значит, что к этому API невозможно получить доступ из браузера, если там origin (домен + порт) отличается от origin самого API.
Некоторые инстансы пытаются это исправить, но делают это криво. У них в ответе приходит разрешающий все `Access-Control-Allow-Origin: *` ... но _два_ раза. По спеке, этот заголовок должен быть не более чем один, поэтому (по крайней мере в Firefox) такая API все равно недоступна.
Эта проблема — почти единственная причина, почему у https://fediread.link вообще есть какой-либо бэкенд. Это должно было быть полностью браузерное приложение!
Самая частая из проблем, на самом деле, даже не специфична для ActivityPub — криво настроенные Access-Control (CORS) заголовки.
Некоторые инстансы совсем не ставят заголовок https://http.dev/access-control-allow-origin на свой публичный API. Это автоматически значит, что к этому API невозможно получить доступ из браузера, если там origin (домен + порт) отличается от origin самого API.