概要
README の Android 設定例(3 箇所)と サンプルアプリの AndroidManifest.xml(1 箇所) で、flutter_web_auth_2 のコールバック Activity のクラス名が誤って com.linusu.flutter_web_auth.CallbackActivity(_2 なし)と書かれている。この記述では Android で認証コールバックがアプリに戻らない。
正しいクラス名
pubspec.yaml の依存は flutter_web_auth_2: ^4.0.0 であり、実際のクラスの完全修飾名は次のとおり。
com.linusu.flutter_web_auth_2.CallbackActivity
(flutter_web_auth_2-4.1.0/android/src/main/kotlin/com/linusu/flutter_web_auth_2/CallbackActivity.kt)
com.linusu.flutter_web_auth(_2 なし)は旧パッケージ flutter_web_auth のもので、本ライブラリの依存には含まれていない。
該当箇所
README.md
| 行 |
記述 |
判定 |
セクション |
| README.md:153 |
com.linusu.flutter_web_auth_2.CallbackActivity |
正 |
English / Android Configuration |
| README.md:179 |
com.linusu.flutter_web_auth_2.CallbackActivity |
正 |
English / Important (OAuth redirect on Android) |
| README.md:268 |
com.linusu.flutter_web_auth.CallbackActivity |
誤 |
English / How to Support Both Methods in the Same App |
| README.md:551 |
com.linusu.flutter_web_auth.CallbackActivity |
誤 |
日本語 / Android設定 |
| README.md:653 |
com.linusu.flutter_web_auth.CallbackActivity |
誤 |
日本語 / 両方式を同一アプリでサポートするには |
日本語セクションの Android 設定例は 2 箇所とも誤っており、日本語 README だけを見て組み込んだ利用者は必ず踏む。
サンプルアプリ
example/android/app/src/main/AndroidManifest.xml:30
<!-- flutter_web_auth_2 用のコールバック受け取り Activity -->
<activity android:name="com.linusu.flutter_web_auth.CallbackActivity" android:exported="true">
<intent-filter android:label="flutter_web_auth_2">
...
<data android:scheme="misskeyauth" />
</intent-filter>
</activity>
サンプルアプリ自体が誤った宣言になっているため、example を Android 実機/エミュレータで動かしても OAuth / MiAuth のコールバックが戻らない。コメントと android:label は flutter_web_auth_2 になっているのに android:name だけ _2 が抜けている、typo と見られる。
影響
flutter_web_auth_2 v4 系はプラグイン側の AndroidManifest.xml に CallbackActivity を宣言していない(プラグインの manifest には <queries> のみ)。したがって CallbackActivity はアプリ側で宣言する必要があり、そこで存在しないクラス名を指定すると、ブラウザからのカスタムスキーム復帰を受け取る Activity が実質的に存在しない状態になる。
これは README の「よくあるエラー」に挙げられている
PlatformException(CANCELED, User canceled login, ...) on Android
- The device did not deliver the callback to the app. Ensure
com.linusu.flutter_web_auth_2.CallbackActivity has a matching <intent-filter>.
の典型的な原因そのものであり、README とサンプルが自らその症状を誘発している状態になっている。
修正方針
README.md の 268 / 551 / 653 行目の com.linusu.flutter_web_auth.CallbackActivity を com.linusu.flutter_web_auth_2.CallbackActivity に修正する
example/android/app/src/main/AndroidManifest.xml:30 の android:name を com.linusu.flutter_web_auth_2.CallbackActivity に修正し、Android 実機/エミュレータで OAuth・MiAuth のコールバックが実際にアプリへ戻ることを確認する
- 再発防止として、同じ Android 設定スニペットが README 内に 4 箇所(153 / 268 / 551 / 653)重複しており、今回のように片方だけ修正が漏れる原因になっている。英語版・日本語版それぞれで正となるスニペットを 1 箇所に集約し、他所からはそこを参照する形に整理することを検討したい
- 併せて、サンプルアプリの
AndroidManifest.xml を「利用者がコピーする正解の例」として README から参照する運用にしておくと、README とサンプルの乖離を防げる
概要
README の Android 設定例(3 箇所)と サンプルアプリの
AndroidManifest.xml(1 箇所) で、flutter_web_auth_2のコールバック Activity のクラス名が誤ってcom.linusu.flutter_web_auth.CallbackActivity(_2なし)と書かれている。この記述では Android で認証コールバックがアプリに戻らない。正しいクラス名
pubspec.yamlの依存はflutter_web_auth_2: ^4.0.0であり、実際のクラスの完全修飾名は次のとおり。(
flutter_web_auth_2-4.1.0/android/src/main/kotlin/com/linusu/flutter_web_auth_2/CallbackActivity.kt)com.linusu.flutter_web_auth(_2なし)は旧パッケージflutter_web_authのもので、本ライブラリの依存には含まれていない。該当箇所
README.md
com.linusu.flutter_web_auth_2.CallbackActivitycom.linusu.flutter_web_auth_2.CallbackActivitycom.linusu.flutter_web_auth.CallbackActivitycom.linusu.flutter_web_auth.CallbackActivitycom.linusu.flutter_web_auth.CallbackActivity日本語セクションの Android 設定例は 2 箇所とも誤っており、日本語 README だけを見て組み込んだ利用者は必ず踏む。
サンプルアプリ
example/android/app/src/main/AndroidManifest.xml:30サンプルアプリ自体が誤った宣言になっているため、example を Android 実機/エミュレータで動かしても OAuth / MiAuth のコールバックが戻らない。コメントと
android:labelはflutter_web_auth_2になっているのにandroid:nameだけ_2が抜けている、typo と見られる。影響
flutter_web_auth_2v4 系はプラグイン側のAndroidManifest.xmlにCallbackActivityを宣言していない(プラグインの manifest には<queries>のみ)。したがってCallbackActivityはアプリ側で宣言する必要があり、そこで存在しないクラス名を指定すると、ブラウザからのカスタムスキーム復帰を受け取る Activity が実質的に存在しない状態になる。これは README の「よくあるエラー」に挙げられている
の典型的な原因そのものであり、README とサンプルが自らその症状を誘発している状態になっている。
修正方針
README.mdの 268 / 551 / 653 行目のcom.linusu.flutter_web_auth.CallbackActivityをcom.linusu.flutter_web_auth_2.CallbackActivityに修正するexample/android/app/src/main/AndroidManifest.xml:30のandroid:nameをcom.linusu.flutter_web_auth_2.CallbackActivityに修正し、Android 実機/エミュレータで OAuth・MiAuth のコールバックが実際にアプリへ戻ることを確認するAndroidManifest.xmlを「利用者がコピーする正解の例」として README から参照する運用にしておくと、README とサンプルの乖離を防げる