-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_FlutterThirdStep2
-
戻る
- ...Flutterの5thステップ
- Flutterのファースト・ステップ2
- Flutterのセカンド・ステップ2
- Flutterのサード・ステップ2(本ページ)
OAuth系認証・認可処理を実装し、序にReduxっぽい仕組みを導入。
以前のバージョンではAppAuthで認証処理を実装していたが(Flutterのセカンド・ステップの該当節を参照)、
Windowsデスクトップ版を実装するにあたり問題が発生して、自前実装が必要になった。
Windowsデスクトップ版でというのがポイント
以下の辺りにEXEがある。
\flutter_template\build\windows\x64\runner\Debug
-
登録内容
myapp.regWindows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\myapp] @="URL:myapp Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\myapp\shell\open\command] @="\"(絶対パスを記入)\FrontendTemplates\UI\XPlat\flutter_template\build\windows\x64\runner\Debug\my_app.exe\" \"%1\"" -
各処理(PowerShell)
-
登録
myapp.regをダブルクリック -
テスト
start myapp://test -
解除
reg delete "HKEY_CLASSES_ROOT\myapp" /f
-
未記載(元 Wiki も見出しのみ)。
Flutterでローカルストレージ的な機能を使用する。
flutter pub add shared_preferences
※ 既出だが、再掲。
Flutterでセキュアなローカルストレージ的な機能を使用する。
flutter pub add flutter_secure_storage
※ 一度、shared_preferences で提案されたコードを置き換える。
認可リクエストでSHA256が必要になる。
dart pub add crypto
Flutterからブラウザを起動する。
flutter pub add url_launcher
FlutterからカスタムURLスキームを処理する。
flutter pub add app_links
結局、まるッと移行した(AppAuthからスクラッチ実装に変更したたタメ)。
-
移行元
-
移行先
方式としては、Reactと同じ様に、ヘッダーのSignIn要素定義ファイルに処理を実装した。
- 移行元:https://github.com/OpenTouryoProject/FrontendTemplates/blob/develop/UI/SPA/React/vite-react-ts/src/components/SignIn.tsx
- 移行先:https://github.com/OpenTouryoProject/FrontendTemplates/tree/develop/UI/XPlat/flutter_template/lib/widgets/sign_in.dart
方式としては、カスタムURLスキームなのでmain.dartに処理を実装した。
- 移行元:https://github.com/OpenTouryoProject/FrontendTemplates/blob/develop/UI/SPA/React/vite-react-ts/src/components/RedirectOfAuth.tsx
- 移行先:https://github.com/OpenTouryoProject/FrontendTemplates/blob/develop/UI/XPlat/flutter_template/lib/main.dart
- 追加:https://github.com/OpenTouryoProject/FrontendTemplates/blob/develop/UI/XPlat/flutter_template/lib/touryo/auth_state.dart
※ ポイントとしては、
- Windowsのシングル・インスタンス対応
- Router・RedirectOfAuthを使用せず
- トークン取得完了をSignInウィジェットへ通知する処理を追加。
通知処理の実装でRedux対応を思い出した。Flutterの選択肢は複数あるが調査の結果、Riverpodを選択。
ValueNotifierはプリミティブ型のみだが、NotifierProviderはオブジェクトを対象にできる。
flutter pub add flutter_riverpod
- https://github.com/OpenTouryoProject/FrontendTemplates/blob/develop/UI/XPlat/flutter_template/lib/screens/about.dart
- https://github.com/OpenTouryoProject/FrontendTemplates/blob/develop/UI/XPlat/flutter_template/lib/screens/counter.dart
- https://github.com/OpenTouryoProject/FrontendTemplates/blob/develop/UI/XPlat/flutter_template/lib/screens/crud_sample.dart
- FrontendTemplates/UI/XPlat at develop · OpenTouryoProject/FrontendTemplates
https://github.com/OpenTouryoProject/FrontendTemplates/tree/develop/UI/XPlat/
移行メモ
- 「戻る」の並びにある「Flutterのサード・ステップ2」は自ページのため、 その旨を補ってプレーン・テキストとした。
- 同名の見出し(「インストール」)が衝突するため、括弧で文脈を補って一意にした。
- 本文の「変更したたタメ」は原文ママ(「変更したタメ」の重複と思われる)。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 他ページのアンカを指すリンクは「〜(ページ名の該当節を参照)」の形に置き換えた。- 元 Wiki の行頭空白によるプレフォーマット・ブロックは、 フェンス付きコードブロックにした。
- 本文の無い見出し(「ハンドラ」)は、その旨を明示した。
- リンク先が未移行のページは、移行先のファイル名を
`DNET_○○.md`の形で示し TODO.md に登録した。
Tags: 移行, Flutter, Flutterデスクトップ, カスタムURLスキーム, OAuth, PKCE, Riverpod, Redux, flutter_secure_storage, app_links
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。