Twitter 是否崩溃还有待观察,但有迹象表明。无论发生什么,我都会继续对 Mastodon 进行一些投资。上周,我展示了如何在 Twitter 和 Mastodon 之间同步一个人的内容。
这周,我在我的域上设置了一个 Mastodon 句柄,它重定向到我的个人资料页面:我想解释我是如何实现它的,以及我仍然遇到的问题。
Mastodon 与 Twitter 的不同之处在于它不是集中式的:它是 Mastodon 服务器的联合体,独立运行并相互连接 - Fediverse 。准确地说,Fediverse 不仅仅是 Mastodon 节点,但我们不要走那么远。
创建 Mastodon 账户的第一个问题是选择正确的实例。我的第一选择是mastodon.social ,但当时它对新帐户关闭。我无缘无故地将目光投向了mastodon.top ,因为它在提案列表中并且是法语的。
服务器的选择并不那么重要,因为您可以随时将您的帐户移动到另一个实例并保留您的关注者。请注意,您将在原始服务器上留下(并丢失)您的内容。在所有情况下,您的配置文件都由服务器命名空间;因此,您的句柄发生了变化。
目前,我是@[email protected] 。但是,也许我将来会在foojay.social上加入我的朋友,或者建立我自己的frankel.social
?在这两种情况下,我都需要更改句柄的后缀。
然而,我在许多网站上发布了我的句柄,并且不想在迁移时忘记任何更新。因此,我要求句柄必须是不可变的。
我在上面提到过,Mastodon 节点属于一个名为 Fediverse 的网络。 Fediverse 节点可以通过几种不同的协议连接。 Mastodon 节点使用ActivityPub 。在下面,ActivityPub 依靠 WebFinger 找到句柄的正确位置。
Mastodon 需要将@[email protected]
翻译成https://mastodon.top/web/@frankel 。翻译必须发生在任何 Mastodon 实例上,无论其域如何。该过程基于WebFinger 规范,又名RFC 7033:
RFC 7033中描述的 WebFinger 是一种规范,它定义了一种解析资源链接的方法,仅给定特定服务器上的 URI。这使任何人都可以查找资源所在的位置,而无需事先知道其确切位置;例如,通过电子邮件或电话号码。此查找针对端点
/.well-known/webfinger
,resource
查询参数随查找一起传递。与 Mastodon 一起使用的资源 URI 是acct:
URI,如RFC 7565中所述,其中包含托管在特定域上的配置文件的用户名。
根据上述内容,在搜索我的个人资料时,查询如下: https://mastodon.top/.well-known/webfinger?resource=acct:[email protected] 。您可以通过转到您已登录的 Mastodon 实例、搜索我的用户名并通过您喜欢的浏览器的开发人员工具查看流量来进行检查。
响应如下:
{ "subject":"acct:[email protected]", "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}" } ] }
rel
如果我对自定义域上的相同查询返回相同的响应,它应该可以工作。这就是我所做的: https ://blog.frankel.ch/.well-known/webfinger?resource=acct:[email protected]。因为它是一个静态页面并且我是唯一的帐户,所以我们不需要查询参数: https ://blog.frankel.ch/.well-known/webfinger。
鉴于此,我可以使用@[email protected]
(或任何句柄@frankel.ch
)在https://mastodon.top上搜索,它会返回预期结果:
我检查了其他实例,例如https://mastodon.social/ ,但它不起作用。原因很简单。在您登录的实例上搜索时,XHR 是https://mastodon.top/api/v2/search?q=@[email protected]&resolve=true&limit=5 ;如果不是,它是https://mastodon.top/api/v2/search?q=@[email protected]&resolve=false&limit=5 。
结论:您只能在未通过身份验证时查询同一实例上的句柄。
该文档确认如果resolve
为false
,则查询不会尝试使用 WebFinger:
resolve
布尔值。尝试 WebFinger 查找?默认为假。
--执行搜索
Mastodon 和 WebFinger 背后的理论令人着迷。我已经成功地配置了我的不可变 mastodon 句柄@[email protected]
。这是我可以与潜在追随者交流的句柄:如果我移动到另一台服务器,我将用我的新坐标更新webfinger
。
这个技巧奏效了,因为我是我域中唯一的 Mastodon 用户。如果有多个,则需要超越静态页面以根据acct:
参数返回不同的 ID;其余的保持不变。
更进一步:
最初于 2022 年 12 月 18 日发表于A Java Geek
Shashank Rana在Unsplash上拍摄的照片