kmycode / mastoom

Mastodon cross-platform client
MIT License
9 stars 2 forks source link

AppRegistration の保存・管理方法 #5

Open amay077 opened 7 years ago

amay077 commented 7 years ago

UWP, Mobile ともに、いずれ必要になると思うので issue だけ立てておきます。

  1. Instance domain
  2. Streaming API domain
  3. ClientId
  4. ClientSecret

の 4つ は、今はハードコードだけど、

    1. はユーザーに入力してもらって、
    1. は初回利用時に登録して得る必要があり、どこかに保存管理しておく必要があります。

パッと思いつくのは

  1. 端末内のディスクに保存
  2. mBaaS に保存

くらいです。

  1. は PCLStorage と SQLite か生json などを保存すればてっとり早く実装できますね。
  2. は、もうちょっと頑張る方法で、これができれば mBaaS に保存されている Instance を、ユーザーに選択してもらうことができるでしょう。 mBaaS は Visual Studio Mobile Center を試しにつかってみたいなーという希望はあるものの UWP 非対応だし、ちょっと検討が必要そうですね。
kmycode commented 7 years ago

そもそもMastodonは、全く同じ名前のアプリを1つのインスタンスにいくつも登録することができます。 なので、そこを突いた攻撃というのが今後出てくる可能性もあり、それへの対策もこれから議論されるかもしれません。例えば同じ名前のアプリ作成の制限とか。 あすかは 1. でやろうと思ってましたが、上みたいな(勝手な)懸念もありますので、 2. に関する相談もしてみたいです!

Visual Studio Mobile Centerは、UWPも3~6ヶ月後のうちに対応するって公式で書いてあります。 https://docs.microsoft.com/en-us/mobile-center/general/roadmap ですが、そもそもVisual Studio Mobile Centerは、アプリのクラッシュレポート収集+α程度の機能しか有していません。 ロードマップの内容もHockeyAppと丸かぶりなので、後継という位置づけではないでしょうか。 クライアントID・シークレット共有の前提となるデータ共有機能実装の望みはほぼないです。 (むろんクラッシュレポートとしての活用はありだと思います。Firebaseにも同様の機能はありますが反映遅いらしいので)

私は、Firebaseが最も現実的な選択肢かなって思ってます。 Azure、AWSもありますが、両者は無償枠が期間限定となっています。 対してFirebaseは、無償枠に期限が設けられているといった記述は特に見つかりませんし、 Realtime Databaseは月10GBまでのダウンロードが許されています。 Mastodonクライアントにはすでに多数の先行アプリがあり、他にも数多くのアプリが開発中であることを考えると 無料枠分でも、十分に賄えると考えています。 (むろんキャッシュをとるなど通信量を減らす対策が前提ですが)

また、ストリーミングURIについては、mstdn.jpなどよく知られたものであれば、管理サイドで対応して自動設定してあげたほうが便利かなと思います。もちろんユーザは値を編集可能です。 (ユーザが入力した値をそのままDBに保存すると、誰かがいたずらする可能性があるので)

amay077 commented 7 years ago

了解です。では Firebase でいきましょうか。 使う時にラッパークラスを一枚かぶせておけば、もし他への切り替えたい時も楽になりますね。