Skip to content

fix: Android の CallbackActivity クラス名が誤っており、README とサンプルアプリの通りに設定するとコールバックが戻らない #11

Description

@LibraryLibrarian

概要

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:labelflutter_web_auth_2 になっているのに android:name だけ _2 が抜けている、typo と見られる。

影響

flutter_web_auth_2 v4 系はプラグイン側の AndroidManifest.xmlCallbackActivity を宣言していない(プラグインの manifest には <queries> のみ)。したがって CallbackActivity はアプリ側で宣言する必要があり、そこで存在しないクラス名を指定すると、ブラウザからのカスタムスキーム復帰を受け取る Activity が実質的に存在しない状態になる。

これは README の「よくあるエラー」に挙げられている

PlatformException(CANCELED, User canceled login, ...) on Android

  1. The device did not deliver the callback to the app. Ensure com.linusu.flutter_web_auth_2.CallbackActivity has a matching <intent-filter>.

の典型的な原因そのものであり、README とサンプルが自らその症状を誘発している状態になっている。

修正方針

  1. README.md の 268 / 551 / 653 行目の com.linusu.flutter_web_auth.CallbackActivitycom.linusu.flutter_web_auth_2.CallbackActivity に修正する
  2. example/android/app/src/main/AndroidManifest.xml:30android:namecom.linusu.flutter_web_auth_2.CallbackActivity に修正し、Android 実機/エミュレータで OAuth・MiAuth のコールバックが実際にアプリへ戻ることを確認する
  3. 再発防止として、同じ Android 設定スニペットが README 内に 4 箇所(153 / 268 / 551 / 653)重複しており、今回のように片方だけ修正が漏れる原因になっている。英語版・日本語版それぞれで正となるスニペットを 1 箇所に集約し、他所からはそこを参照する形に整理することを検討したい
  4. 併せて、サンプルアプリの AndroidManifest.xml を「利用者がコピーする正解の例」として README から参照する運用にしておくと、README とサンプルの乖離を防げる

Metadata

Metadata

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentation

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions