Наличие неизменной ручки мастодонта

Наличие неизменной ручки мастодонта

23 декабря 2022 г.

Пока неизвестно, рухнет ли Twitter, хотя некоторые признаки говорят об этом. Что бы ни случилось, я продолжаю немного инвестировать в Mastodon. На прошлой неделе я показал, как синхронизировать свой контент между Twitter и Mastodon.

На этой неделе я установил дескриптор Mastodon в своем домене, который перенаправляет на страницу моего профиля: я хочу объяснить, как я этого добился, и проблемы, которые у меня все еще есть.

Мастодонт 101

Mastodon отличается от Twitter тем, что он не централизован: это федерация серверов Mastodon, работающих независимо и подключенных друг к другу — Fediverse. Если быть точным, Fediverse — это больше, чем узлы Mastodon, но не будем заходить так далеко.

Первая проблема, когда вы хотите создать учетную запись Mastodon, — это выбрать правильный экземпляр. Мой первый выбор был mastodon.social, но в то время он был закрыт для новых учетных записей. Я обратил внимание на mastodon.top просто потому, что он был в списке предложений и был на французском языке.

Выбор сервера не так важен, поскольку вы всегда можете переместить свой аккаунт в другой экземпляр и сохранить своих подписчиков. Обратите внимание, что вы оставите (и потеряете) свой контент на исходном сервере. Во всех случаях пространство имен вашего профиля определяется сервером; таким образом, ваш дескриптор меняется.

В настоящее время я @frankel@mastodon.top. Но, возможно, я присоединюсь к своим друзьям на foojay.social или создам свой собственный frankel.social в будущем. ? В обоих случаях мне нужно будет изменить суффикс моего дескриптора.

Тем не менее, я публикую свой дескриптор на многих сайтах и ​​не хочу забывать какие-либо обновления при миграции. Следовательно, я требую, чтобы дескриптор должен быть неизменным.

Выше я упоминал, что узлы Mastodon принадлежат сети Fediverse. Узлы Fediverse могут быть подключены через несколько разных протоколов. Узлы Mastodon используют ActivityPub. Внизу ActivityPub полагается на WebFinger, чтобы найти правильное местоположение дескриптора.

WebFinger

Mastodon необходимо перевести @frankel@mastodon.top в https://mastodon.top/web/ @frankel. Перевод должен происходить на любом экземпляре Mastodon, независимо от его домена. Этот процесс основан на спецификации WebFinger, иначе RFC 7033:

<цитата>

WebFinger, как описано в RFC 7033, – это спецификация, определяющая метод разрешения ссылок на ресурс< /strong>, учитывая только URI на конкретном сервере. Это позволяет любому узнать, где находится ресурс, без необходимости заранее знать его точное местоположение; например, по электронной почте или номеру телефона. Этот поиск направлен на конечную точку /.well-known/webfinger, и вместе с поиском передается параметр запроса resource. URI ресурса, используемый с Mastodon, — это URI acct:, как описано в RFC 7565, с имя пользователя профиля, размещенного в определенном домене.

-- Что такое WebFinger и для чего он используется?

Согласно вышеизложенному, при поиске моего профиля запрос следующий: https: //mastodon.top/.well-known/webfinger?resource=acct:frankel@mastodon.top. Вы можете проверить это, зайдя на экземпляр Mastodon, в котором вы вошли, найти мой дескриптор и просмотреть трафик с помощью инструментов разработчика вашего предпочтительного браузера.

Ответ следующий:

{
  "subject":"acct:frankel@mastodon.top",
  "aliases":[
    "https://mastodon.top/@frankel",                      #1
    "https://mastodon.top/users/frankel"                  #1
  ],
  "links":[
    {
      "rel":"http://webfinger.net/rel/profile-page",      #2
      "type":"text/html",
      "href":"https://mastodon.top/@frankel"
    },
    {
      "rel":"self",
      "type":"application/activity+json",
      "href":"https://mastodon.top/users/frankel"
    },
    {
      "rel":"http://ostatus.org/schema/1.0/subscribe",
      "template":"https://mastodon.top/authorize_interaction?uri={uri}"
    }
  ]
}
  1. URL профиля
  2. rel для мастодонта

Неизменная ручка мастодонта

Это должно сработать, если я верну тот же ответ на тот же запрос в личном домене. Вот что я сделал: https://blog.frankel.ch/.well -known/webfinger?resource=acct:me@frankel.ch. Поскольку это статическая страница, а я единственный аккаунт, нам не нужен параметр запроса: https://blog .frankel.ch/.well-known/webfinger.

Учитывая это, я могу искать на https://mastodon.top с помощью @me@frankel.ch (или любого дескриптора @frankel.ch) и возвращает ожидаемые результаты:

Я проверил другие экземпляры, например,, https://mastodon.social/, но это не работает. Причина проста. При поиске в экземпляре, в который вы вошли, XHR будет https://mastodon.top/api/v2/search?q=@me@frankel.ch&resolve=true&limit=5; если нет, то это https://mastodon.top/api. /v2/search?q=@me@frankel.ch&resolve=false&limit=5.

Вывод: вы можете запрашивать дескрипторы одного и того же экземпляра только без аутентификации.

Документация подтверждает, что если resolve имеет значение false, запрос не пытается использовать WebFinger:

<цитата>

разрешить

логический. Попытаться найти WebFinger? По умолчанию false.

-- Выполнить поиск

Заключение

Теория Mastodon и WebFinger завораживает. Мне удалось настроить неизменный дескриптор мастодонта @me@frankel.ch. Это дескриптор, который я могу сообщить потенциальным подписчикам: если я перейду на другой сервер, я обновлю webfinger своими новыми координатами.

Уловка работает, потому что я единственный пользователь Mastodon в своем домене. Если у вас их несколько, вам нужно выйти за пределы статической страницы, чтобы вернуть другой идентификатор в зависимости от параметра acct:; остальное остается прежним.

Дальше:

* Шаги к славе REST * Язык гипертекстовых приложений JSON * RFC 8288 — Веб-ссылки * Выбор кода состояния HTTP — не усложняйте< /p>


Первоначально опубликовано на сайте A Java Geek 18 декабря 2022 г.

Фото Шашанк Рана на Unsplash


Оригинал