Самая частая из проблем, на самом деле, даже не специфична для 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 вообще есть какой-либо бэкенд. Это должно было быть полностью браузерное приложение!
Вторая крупная проблема — непоследовательность в том, какие API инстансы считают публичными, а какие нет.
Например, у Мастодона есть "защищенный" режим, когда любой ActivityPub-запрос требует подписи приватным ключом аккаунта. Фактически, это значит, что запросить что-либо по протоколу AP может только другой инстанс, по команде какого-либо пользователя этого инстанса.
И все бы ничего, но при этом у таких Мастодонов остается открытой собственное мастодоновское API! Через которое можно без какой-либо авторизации получить любые public и unlisted посты!
Из-за этого и подобных ограничений я не мог просто использовать "голый" ActivityPub, как хотел изначально — мне пришлось писать адаптеры и фолбеки на API Mastodon и Misskey. И, вероятно, придется делать так еще и для других серверов.
Вторая крупная проблема — непоследовательность в том, какие API инстансы считают публичными, а какие нет.
Например, у Мастодона есть "защищенный" режим, когда любой ActivityPub-запрос требует подписи приватным ключом аккаунта. Фактически, это значит, что запросить что-либо по протоколу AP может только другой инстанс, по команде какого-либо пользователя этого инстанса.