マストドンと同じようなことができる。
ブツ
苦労した
- misskey API の情報がない(公式サイトでさえ404リンク切れ)
- バージョンによって認証APIの仕様が変わる
- misskey API の情報がまとまっていない
- 認証APIに謎のクセがあった
マストドンAPIってクオリティ高かったんだなってことがよくわかった。
misskeyはマストドンAPIと互換性がない。ので、ゴリゴリにコードを書かねばならなかった。
認証がヤバイ
とくに認証がめちゃくちゃ大変だった。自力でUUIDv4やSHA-256しないとダメとか……。きついのはバージョンごとに認証方法が違うこと。
version | 認証方法 |
---|---|
〜12.38 | OAuth |
12.39〜 | MiAuth |
バージョン12.39以降からはMiAuthとかいう独自の認証方法を用いる必要がある。
しかもインスタンスごとに使っているバージョンが違うから、両方実装した上に、どうにかしてインスタンスごとにどの認証方法を使うか振り分けねばならない。バージョンをAPIで取得できればよかったのだが、取得する方法がわからなかった。まともな資料がない。リンク切れの嵐。なので、とりあえずmisskey.ioだけMiAuthするようにした。
応答が返ってこない現象
misskeyにログインし承認してもらうため、認証ページに遷移させるのだが、応答が返ってこなくなることがある。未だに原因不明。めちゃくちゃハマった。
// なぜか原因不明の応答が返ってこない現象にみまわれる
// * nameはMyAppでないと返ってこない?
// * permissionの:をURLエンコードしたら返ってこない?
// * name,callback,permissionの順でないと返ってこない?
// * 現在のページでlocation.href = urlしたら返ってこない?(代わりにwindow.open(url)する)
// 上記すべてを満たしたら返ってきた。マジで意味不明。
// https://misskey-hub.net/docs/api/
const url = `${endpoint}?name=MyApp&${params.toString()}&permission=${this.permission}`
もう触りたくないレベルで不毛な苦しみを長期にわたり味わった。ちゃんとしたドキュメント用意してほしい。なんでmisskey流行らないのか、ちょっとわかった気がする。せっかく面白そうなのに、もったいない。でも個人開発みたいだし、ドキュメントを実装にあわせるのってすごく大変だからなぁ。仕方ないね。
情報源
- https://misskey-hub.net/docs/api/
- https://forum.misskey.io/d/6-miauth
- https://meisskey.one/api-doc#operation/version
- https://misskey.m544.net/api-doc/#section/Permissions
課題
- インスタンスのドメイン名を表示したい(アイコンだけでは区別できない)
すでにご指摘いただきました。 ですよね。これ、マストドンも同じなんだよなぁ。あっちはまだアイコンで区別できるからマシだけど。
- mpurseのアドレスを書くと投げモナボタンがつくことを確認したい
追記
2022-06-10 11:25
- インスタンスのドメイン名を表示した
- mpurseのアドレスを書くと投げモナボタンがつくことを確認した
- インスタンスのmisskeyバージョン値を調べて12.39以降ならMiAuth、それより前ならOAuthで認証するようにした