Something went wrong. Try again.
ATOMO: what our apps call ATProto OAuth login. Client metadata for each app, and the Swift parts.
アトモ:ATProto の共通認証(OAuth)の呼び名。アプリごとの client
Something went wrong. Try again.
ATOMO #
ATOMO(アトモ)は、ATProto の共通認証(OAuth)をわたしたちのアプリで呼ぶ名前だ。ボタンは「ATOMO でログイン」と書く。
名前 #
手本は IC 乗車券の名前だ(Suica・ICOCA・PASMO)。短く、カタカナで読め、「〇〇で乗る」と同じく「〇〇でログイン」と書ける。
- AT と「友(とも)」を重ねた。Atmosphere の友だちとして、どのアプリにもついてくる
- イタリア語・スペイン語では「原子」だ。分けられない1人として、どのアプリでも同じ自分だ
印 #
中を空けた光の輪だ。ハンドルを打つと、輪の中にその人のアイコンが入る。どのアプリでも同じ自分がそこに入る、という意味だ。
「ATOMO でログイン」を押すと輪が呼吸を始め、ブラウザで Bluesky の認可の画面が開く。パスワードはアプリに渡らない。輪がふだん止まっているのは、ほかの光(新しい知らせなど)と見分けるためだ。
このリポジトリ #
アプリごとの OAuth の client metadata を置き、Tangled の sites で配る。
| アプリ | client_id | 戻り先 |
|---|---|---|
| blusco | https://moja.tngl.io/atomo/blusco.json |
io.tngl.moja:/callback |
| Re: | https://moja.tngl.io/atomo/re.json |
io.tngl.moja:/callback |
| kamikire | https://moja.tngl.io/atomo/kamikire.json |
io.tngl.moja:/callback |
| bianco | https://moja.tngl.io/atomo/bianco.json |
io.tngl.moja:/callback |
| nirvana(iOS) | https://moja.tngl.io/atomo/nirvana.json |
io.tngl.moja:/callback |
- ネイティブアプリの public client だ(
token_endpoint_auth_method: none)。PKCE・PAR・DPoP を使う - 戻り先は client_id のホスト名を逆にしたスキームだ。同じホストのアプリは同じスキームになるが、認可の画面(ASWebAuthenticationSession)が戻り先を自分で受けるので、アプリ同士でぶつからない
- ファイルの名前を替えると client_id が変わり、入っている全員のセッションが更新できなくなる。替えない
Atomo.swiftは Mac のアプリで ATOMO に入る部品だ(Foundation と CryptoKit だけを使う)。AtomoWindow.swiftは AppKit のアプリのための印とログインの窓だ。Re: と kamikire はこの2つを写して持つ