MiAuth で
などを検知する方法がないのでアプリの実装やトラブルシューティングが大変そう。
最悪、クライアントをURLに飛ばす前になんらかの通信があれば、その時点で検知できそうだけど
そういう通信もない。
https://github.com/syuilo/misskey/issues/5656#issuecomment-604889634
いちおう、一番最初にPOST /api/miauth/:使用予定のID/checkして
{ ok: false } が返ってきた => 対応インスタンスでそのIDは使用可能{ ok: true } が返ってきた => 対応インスタンスだけどそのIDは既に使用済みで判定する裏技はありそうだけど…
時間が経てばアップデートするインスタンスも増えてくるので2番目の問題は解決できそう
3番目のUUIDの問題も重複はまずないと思うので大丈夫そう
万が一問題ありそうだったらサーバー(クライアント?)サイドでアプリ名+UUIDを結合した文字列をIDとして扱えば良さそう
時間が経てばアップデートするインスタンスも増えてくるので2番目の問題は解決できそう
結局misskey v10のやつは残るだろうし解決できなくない?
これからv10対応アプリが作られることはあるんだろうか
そもそもMisskey v12ですら全体の5〜7割ぐらいしか入ってないし先が長そうhttps://fediverse.network/misskey

これからv10対応アプリが作られることはあるんだろうか
v10のインスタンスにいる人なら作るかもしれない
普通にインスタンスのバージョン取得して判定するのではだめなのかしら
Mastodonでどうしてもそれやらないといけなくて実装したことあるけど面倒くさい
確かに面倒かもしれないけど「困難」「方法がない」ほどではない感じがする
ある機能がそのインスタンスで対応しているか検知しないといけないのはMiAuthに限った話ではないと思う
Misskey対応アプリを作るときはMiAuth関係なくやはり何らかのバージョンチェック処理は必要になると思う
その処理でバージョンが分かればMiAuth対応なのかどうかも分かる
何らかのバージョンチェック処理は必要になると思う
(いろいろなバージョンのMisskeyに対応するアプリを作る場合)
バージョンチェックで機能を判定しようとすると、アプリ開発者が機能と対応バージョンの情報を収集する必要がありハードルが高くなると思います。
また、アプリがバージョンチェックで機能を制限し始めると、旧バージョンインスタンスでバックポート等で機能を実装した場合にバージョンを偽装する羽目になります。
なにか、これが「あればMiAuth対応」みたいなAPIがあればいいかなと思います。
(今のところ POST /api/miauth/:使用予定のID/check を叩いてみるのが確実そうですが)
アプリ開発者が機能と対応バージョンの情報を収集する必要がありハードルが高くなる
旧バージョンインスタンスでバックポート等で機能を実装した場合にバージョンを偽装する羽目になる
なるほど
これが「あればMiAuth対応」みたいなAPIがあればいいかなと思います。
なにか考えてみます
既にあるインスタンスのメタ情報取得APIで、レスポンスに対応している機能一覧みたいなの含めるのが良いかも
既にあるインスタンスのメタ情報取得APIで、レスポンスに対応している機能一覧みたいなの含めるのが良いかも
それがこれだった気がします
https://github.com/syuilo/misskey/blob/09e3ddbd57d3e18b079619f00af533500d99770c/src/server/api/endpoints/meta.ts#L150-L163
それはサーバーごとにenable/disableされてる機能一覧なので、バージョン依存のものそこに入れるのはどうなんだろう
使われてないUUID返すAPIが一番いい気がする (UUID被り問題が解決できるため)
めいめいが言ったように古いバージョンでも特定の機能だけ自前で持ってきてるかもしれないので、機能はバージョン依存ではなさそう
UUID被り問題そこまで気にする必要あるんだろうか
APIリクエストの手間を減らすためにUUIDにしたので、それでは本末転倒感がある
どっちにしろ機能あるか確認するならAPIリクエストしないといけなくない?
APIリクエストするかしないかというより、APIリクエスト(手順)の数を減らしたい
手順が多いほどドキュメントも読みにくくなるし
指定のUUIDが重複しているかチェックするAPI
or
UUID生成して重複チェックして返してくれるAPI
を用意して、それを使うか使わないかは自由にするとか。
将来的にサードパーティアプリを無効にできるような機能が付く可能性があるなら
meta.features にフラグあってもいいかなと
featuresにmiauth: true追加しました
別issue案件だと思うけど、そうでなくても
といったバージョン依存な機能が使えるか簡単に判定できるよう、metaの拡張(あるいは機能一覧APIみたいなもの)があると嬉しいかも
featuresにmiauth: true追加しました
これで大丈夫そう?
Resolved by 02cc1891f21012f1e2527749bbacf054e6728cb0
Most helpful comment
featuresに
miauth: true追加しました