4.1 KiB
+++ date = "2023-03-08" tags = ["bluesky","atproto"] title = "blueskyでhandle.updateしてみた" slug = "bluesky" +++
bluesky(bsky.social)では現在、handle.updateが追加されていて、いわゆるcustom-domain(custom-handle)のようなことができるようになっています。これをhandle.update
と呼びます。
具体的には、syui.bsky.social -> syui.cf
などにhandleを変更することができます。
で、実際にこのhandle.updateをやってみた感想を書きます。
web, cliの両方に簡単に機能を追加しましたので、誰でもできると思います。
web
bsky.syui.cf -> login -> profile -> handle.update
note: re-login
cli
$ sudo pacman -S rust --noconfirm
$ git clone https://github.com/syui/atr
$ cd !$:t
$ cargo build
host = "bsky.social"
pass = "password"
user = "syui.bsky.social"
$ ./target/debug/atr h xxx.bsky.social
$ ./target/debug/atr h example.com
# note: change config.toml
# user = "example.com"
$ ./target/debug/atr a
$ ./target/debug/atr profile
shell
shellでも書いてみました。大体はこんな感じです。
#!/bin/zsh
# session.create
user=syui.bsky.social
pass=xxx
url=https://bsky.social/xrpc/com.atproto.session.create
curl -sL -X POST -H "Content-Type: application/json" -d "{\"handle\":\"$user\",\"password\":\"$pass\"}" $url >! token.json
cat token.json|jq .
# get : did, accessJwt
did=`cat token.json|jq -r .did`
token=`cat token.json|jq -r .accessJwt`
# handle.update
url=https://bsky.social/xrpc/com.atproto.handle.update
json="{\"handle\":\"syui.cf\"}"
curl -sL -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $token" -d "$json" $url
handle.update
なぜatではhandle.customと言わず、handle.updateという単語が採用されているのでしょう。
atでは、handleを削除した場合、そのhandleは空き状態になります。
つまり、誰でも取得できるようになります。
これはatの設計思想だと思われます。
handleを凍結するか、空きにするかで設計思想が異なります。それぞれにメリット、デメリットがあります。
atはhandleの空きを積極的に作ることで、ユーザーがお気に入りのhandleを取得しやすくなっています。
これは、handle.updateの処理にも影響します。
handle.updateとは、handleの完全な移行を意味します。
具体的には、以前のhandleは削除され、空き状態になり、誰でも取得できるようになります。
これについては、matrixでwhy氏に教えてもらいました。
ですから、handle.customではなくhandle.updateという単語が採用されているのだと思います。
しかし、一般的にはhandle.customのほうがわかりやすいので、私もそのように表記することがあります。
ですが、実態は、handleの完全な移行であり、以前のhandleは削除されるという認識です。
handle.update後のerror時の処理ですが、handle = email
でre-loginすると解消されます。
handle.save
これは、atの設計思想からあまりおすすめできるものではありませんが、bsky.social
のhandleを確保しておきたい場合、以下のような処理を行いましょう。
-
handle.updateする
-
以前のhandleでaccountをcreateする
# restore
# account delete : syui.bsky.social
$ atr h syui.bsky.social
# note: invite code x2
did
atのhandleはusernameのようなものです。didがidですね。
didはnostrでいうpubkeyのようなもので、ユーザー固有で変更できないもの、確実なものとして、基本的には内部でdidが参照されています。
handleはあくまでaliasのようなもので、search, mention, loginなどの処理のときに人間にわかりやすいようにしている感じです。
とはいえ、人間にとってhandleのほうが重要ですね。