firebase / flutterfire

πŸ”₯ A collection of Firebase plugins for Flutter apps.
https://firebase.google.com/docs/flutter/setup
BSD 3-Clause "New" or "Revised" License
8.68k stars 3.97k forks source link

πŸ› [firebase_authentication] Reset password action URL is different between request made from iOS and Android #5391

Closed Ken-Lim closed 3 years ago

Ken-Lim commented 3 years ago

Bug report

Describe the bug Reset password action URL in the email is different for request made from iOS and Android

Steps to reproduce

Steps to reproduce the behavior:

The following code was called to trigger a reset password email:

await FirebaseAuth.instance.sendPasswordResetEmail(
        email: test@domain.com,
        actionCodeSettings: ActionCodeSettings(
          androidPackageName: com.mycompany.appname,
          androidMinimumVersion: "1",
          androidInstallApp: true,
          dynamicLinkDomain: appname.page.link,
          handleCodeInApp: true,
          iOSBundleId: com.mycompany.appname,
          url: appname.page.link/resetPassword,
        ),
      );

Expected behavior

Same action URL in the reset password email


Additional context

Action URL for email triggered from an iOS app: https://appname.page.link?link=https://appname.firebaseapp.com/__/auth/action?apiKey%3DMY-API-KEY-HERE%26mode%3DresetPassword%26oobCode%3DOOB-CODE-HERE%26continueUrl%3Dhttps://appname.page.link/resetPassword1%26lang%3Den&ibi=com.mycompany.appname&ifl=https://appname.firebaseapp.com/__/auth/action?apiKey%3DMY-API-KEY-HERE%26mode%3DresetPassword%26oobCode%3DOOB-CODE-HERE%26continueUrl%3Dhttps://appname.page.link/resetPassword%26lang%3Den

Action URL for email triggered from an Android app https://appname.firebaseapp.com/__/auth/action?apiKey=MY-API-KEY-HERE&mode=resetPassword&oobCode=OOB-CODE-HERE&continueUrl=https://appname.page.link/resetPassword&lang=en

Notes: Actual API key was replaced with MY-API-KEY-HERE Actual OOB code was replace with OOB-CODE-HERE

If I call the sendPasswordResetEmail without actionCodeSettings:

await FirebaseAuth.instance.sendPasswordResetEmail(email: test@domain.com);

The following same Action URL will appears in the email triggered from both iOS and Android https://appname.firebaseapp.com/__/auth/action?apiKey=MY-API-KEY-HERE&mode=resetPassword&oobCode=OOB-CODE-HERE&continueUrl=https://appname.page.link/resetPassword&lang=en


Flutter doctor

Run flutter doctor and paste the output below:

Click To Expand ``` Doctor summary (to see all details, run flutter doctor -v): [βœ“] Flutter (Channel stable, 1.22.6, on Mac OS X 10.15.7 19H524 darwin-x64, locale en-AU) [βœ“] Android toolchain - develop for Android devices (Android SDK version 30.0.2) [βœ“] Xcode - develop for iOS and macOS (Xcode 12.4) [!] Android Studio (version 4.1) βœ— Flutter plugin not installed; this adds Flutter specific functionality. βœ— Dart plugin not installed; this adds Dart specific functionality. [βœ“] VS Code (version 1.54.2) [βœ“] Connected device (2 available) ! Doctor found issues in 1 category. ```

Flutter dependencies

Run flutter pub deps -- --style=compact and paste the output below:

Click To Expand ``` Dart SDK 2.10.5 Flutter SDK 1.22.6 appname 1.0.0 dependencies: - async 2.5.0-nullsafety.1 [collection] - cached_network_image 2.5.0 [flutter flutter_cache_manager octo_image] - clock 1.1.0-nullsafety.1 - crypto 2.1.5 [collection convert typed_data] - cupertino_icons 0.1.3 - dio 3.0.10 [http_parser path] - dio_cookie_manager 1.0.0 [cookie_jar dio] - dio_http_cache 0.2.11 [flutter quiver json_serializable json_annotation dio sqflite path crypto] - equatable 1.2.6 [collection meta] - fake_async 1.2.0-nullsafety.1 [clock collection] - firebase_auth 0.20.1 [meta firebase_core firebase_core_platform_interface firebase_auth_platform_interface firebase_auth_web flutter] - firebase_auth_oauth 0.2.4 [flutter firebase_auth firebase_auth_oauth_platform_interface firebase_auth_oauth_web firebase_core] - firebase_core 0.7.0 [firebase_core_platform_interface flutter quiver meta firebase_core_web] - firebase_crashlytics 0.4.0+1 [flutter stack_trace firebase_core firebase_core_platform_interface firebase_crashlytics_platform_interface] - firebase_dynamic_links 0.7.0+1 [flutter firebase_core] - flare_flutter 2.0.6 [flutter flare_dart meta] - flutter 0.0.0 [characters collection meta typed_data vector_math sky_engine] - flutter_bloc 6.1.2 [flutter bloc provider] - flutter_facebook_auth 2.0.2 [flutter flutter_facebook_auth_platform_interface flutter_facebook_auth_web] - flutter_html 1.0.2 [html csslib css_colors video_player chewie webview_flutter chewie_audio flutter_svg flutter] - flutter_signin_button 1.1.0 [flutter font_awesome_flutter] - flutter_staggered_grid_view 0.3.4 [flutter] - google_sign_in 4.5.9 [google_sign_in_platform_interface flutter meta google_sign_in_web] - hive 1.4.4+1 [meta crypto] - hive_flutter 0.3.1 [flutter hive path_provider path] - intl 0.16.1 [path] - linked_scroll_controller 0.1.2 [flutter] - local_auth 0.6.3+4 [flutter meta intl platform flutter_plugin_android_lifecycle] - logging 0.11.4 - mdi 3.0.0 [flutter] - mdns_plugin 1.1.4 [flutter] - multicast_dns 0.2.2 [meta] - retrofit 1.3.4+1 [meta dio] - shared_preferences 0.5.12+4 [meta flutter shared_preferences_platform_interface shared_preferences_linux shared_preferences_macos shared_preferences_web shared_preferences_windows] - sign_in_with_apple 2.5.4 [meta flutter] - swift_design_system 0.0.1+4 [flutter] - url_launcher 5.7.10 [flutter url_launcher_platform_interface url_launcher_web url_launcher_linux url_launcher_macos url_launcher_windows] - uuid 2.2.2 [crypto convert] - video_player 0.10.12+5 [meta video_player_platform_interface video_player_web flutter] - wakelock 0.1.4+2 [flutter] - weather_icons 2.0.2 [flutter] - webview_flutter 0.3.24 [flutter] dev dependencies: - bloc_test 7.1.0 [bloc test meta mockito] - build_runner 1.10.2 [args async build build_config build_daemon build_resolvers build_runner_core code_builder collection crypto dart_style glob graphs http_multi_server io js logging meta mime path pedantic pool pub_semver pubspec_parse shelf shelf_web_socket stack_trace stream_transform timing watcher web_socket_channel yaml] - flutter_launcher_icons 0.8.1 [image args yaml path] - flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters charcode collection matcher meta source_span stream_channel string_scanner term_glyph typed_data] - json_serializable 3.5.1 [analyzer build build_config json_annotation meta path source_gen] - mock_web_server 4.1.1 - mockito 4.1.4 [analyzer build code_builder collection dart_style matcher meta source_gen test_api] - retrofit_generator 1.4.1+2 [dio source_gen built_collection code_builder tuple retrofit analyzer dart_style build] dependency overrides: - analyzer 0.40.5 [_fe_analyzer_shared args cli_util collection convert crypto glob meta package_config path pub_semver source_span watcher yaml] transitive dependencies: - _fe_analyzer_shared 12.0.0 [meta] - archive 2.0.13 [crypto args path] - args 1.6.0 - bloc 6.1.1 [meta] - boolean_selector 2.1.0-nullsafety.1 [source_span string_scanner] - build 1.3.0 [analyzer async convert crypto logging meta path glob] - build_config 0.4.2 [checked_yaml json_annotation meta path pubspec_parse yaml] - build_daemon 2.1.7 [built_collection built_value http_multi_server logging pedantic path pool shelf shelf_web_socket stream_transform watcher web_socket_channel] - build_resolvers 1.3.11 [analyzer build crypto graphs logging path package_config pub_semver] - build_runner_core 6.0.1 [async build build_config build_resolvers collection convert crypto glob graphs json_annotation logging meta path package_config pedantic pool timing watcher yaml] - built_collection 4.3.2 [collection quiver] - built_value 7.1.0 [built_collection collection fixnum quiver] - characters 1.1.0-nullsafety.3 - charcode 1.2.0-nullsafety.1 - checked_yaml 1.0.4 [json_annotation source_span yaml] - chewie 0.9.10 [open_iconic_flutter video_player wakelock flutter] - chewie_audio 1.0.0+1 [open_iconic_flutter video_player screen flutter] - cli_util 0.1.4 [path] - code_builder 3.6.0 [built_collection built_value collection matcher meta] - collection 1.15.0-nullsafety.3 - convert 2.1.1 [charcode typed_data] - cookie_jar 1.0.1 - coverage 0.14.2 [args logging package_config path source_maps stack_trace vm_service] - css_colors 1.0.2 [flutter] - csslib 0.16.2 [source_span] - dart_style 1.3.12 [analyzer args path pub_semver source_span] - ffi 0.1.3 - file 5.2.1 [intl meta path] - firebase 7.3.3 [http http_parser js] - firebase_auth_oauth_platform_interface 0.2.2 [flutter firebase_auth firebase_core] - firebase_auth_oauth_web 0.2.2 [flutter flutter_web_plugins firebase firebase_auth firebase_auth_oauth_platform_interface firebase_core js] - firebase_auth_platform_interface 3.1.0 [flutter meta firebase_core plugin_platform_interface] - firebase_auth_web 0.3.3 [flutter flutter_web_plugins meta http_parser intl firebase_core firebase_core_web firebase_auth_platform_interface js] - firebase_core_platform_interface 3.0.1 [flutter meta plugin_platform_interface quiver] - firebase_core_web 0.2.1+3 [firebase_core_platform_interface flutter flutter_web_plugins meta js] - firebase_crashlytics_platform_interface 1.1.6 [flutter meta collection firebase_core plugin_platform_interface] - fixnum 0.10.11 - flare_dart 2.3.4 - flutter_blurhash 0.5.0 [flutter meta] - flutter_cache_manager 2.1.1 [flutter path_provider uuid http path sqflite pedantic clock file rxdart image] - flutter_facebook_auth_platform_interface 1.0.1 [flutter plugin_platform_interface] - flutter_facebook_auth_web 1.0.6 [flutter flutter_web_plugins js] - flutter_plugin_android_lifecycle 1.0.11 [flutter] - flutter_svg 0.18.1 [path_drawing xml vector_math meta flutter] - flutter_web_plugins 0.0.0 [flutter characters collection meta typed_data vector_math] - font_awesome_flutter 8.11.0 [flutter] - glob 1.2.0 [async collection node_io path pedantic string_scanner] - google_sign_in_platform_interface 1.1.2 [flutter meta quiver] - google_sign_in_web 0.9.2 [google_sign_in_platform_interface flutter flutter_web_plugins meta js] - graphs 0.2.0 - html 0.14.0+4 [csslib source_span] - http 0.12.2 [http_parser path pedantic] - http_multi_server 2.2.0 [async] - http_parser 3.1.4 [charcode collection source_span string_scanner typed_data] - image 2.1.19 [archive xml meta] - io 0.3.4 [charcode meta path string_scanner] - js 0.6.3-nullsafety.2 - json_annotation 3.1.1 - matcher 0.12.10-nullsafety.1 [stack_trace] - meta 1.3.0-nullsafety.3 - mime 0.9.7 - nested 0.0.4 [flutter] - node_interop 1.2.1 [js] - node_io 1.2.0 [file node_interop path] - node_preamble 1.4.13 - octo_image 0.3.0 [flutter flutter_blurhash] - open_iconic_flutter 0.3.0 [flutter] - package_config 1.9.3 [path charcode] - path 1.8.0-nullsafety.1 - path_drawing 0.4.1+1 [vector_math meta path_parsing flutter] - path_parsing 0.1.4 [vector_math meta] - path_provider 1.6.27 [flutter path_provider_platform_interface path_provider_macos path_provider_linux path_provider_windows] - path_provider_linux 0.0.1+2 [path xdg_directories path_provider_platform_interface flutter] - path_provider_macos 0.0.4+8 [flutter] - path_provider_platform_interface 1.0.4 [flutter meta platform plugin_platform_interface] - path_provider_windows 0.0.4+3 [path_provider_platform_interface meta path flutter ffi win32] - pedantic 1.10.0-nullsafety.2 - petitparser 3.1.0 [meta] - platform 2.2.1 - plugin_platform_interface 1.0.3 [meta] - pool 1.5.0-nullsafety.2 [async stack_trace] - process 3.0.13 [file intl meta path platform] - provider 4.3.3 [collection flutter nested] - pub_semver 1.4.4 [collection] - pubspec_parse 0.1.8 [checked_yaml json_annotation pub_semver yaml] - quiver 2.1.5 [matcher meta] - rxdart 0.25.0 - screen 0.0.5 [flutter] - shared_preferences_linux 0.0.2+4 [file flutter meta path path_provider_linux shared_preferences_platform_interface] - shared_preferences_macos 0.0.1+11 [shared_preferences_platform_interface flutter] - shared_preferences_platform_interface 1.0.4 [meta flutter] - shared_preferences_web 0.1.2+7 [shared_preferences_platform_interface flutter flutter_web_plugins meta] - shared_preferences_windows 0.0.2+3 [shared_preferences_platform_interface flutter file meta path path_provider_platform_interface path_provider_windows] - shelf 0.7.9 [async collection http_parser path stack_trace stream_channel] - shelf_packages_handler 2.0.1 [path shelf shelf_static] - shelf_static 0.2.9+2 [convert http_parser mime path shelf] - shelf_web_socket 0.2.4 [shelf stream_channel web_socket_channel] - sky_engine 0.0.99 - source_gen 0.9.7+1 [analyzer async build dart_style glob meta path pedantic source_span] - source_map_stack_trace 2.1.0-nullsafety.3 [path stack_trace source_maps] - source_maps 0.10.10-nullsafety.2 [source_span] - source_span 1.8.0-nullsafety.2 [charcode collection path term_glyph] - sqflite 1.3.2+3 [flutter sqflite_common path] - sqflite_common 1.0.3+1 [synchronized path meta] - stack_trace 1.10.0-nullsafety.1 [path] - stream_channel 2.1.0-nullsafety.1 [async] - stream_transform 1.2.0 - string_scanner 1.1.0-nullsafety.1 [charcode source_span] - synchronized 2.2.0+2 - term_glyph 1.2.0-nullsafety.1 - test 1.16.0-nullsafety.5 [analyzer async boolean_selector coverage http http_multi_server io js node_preamble package_config path pedantic pool shelf shelf_packages_handler shelf_static shelf_web_socket source_span stack_trace stream_channel typed_data web_socket_channel webkit_inspection_protocol yaml test_api test_core] - test_api 0.2.19-nullsafety.2 [async boolean_selector collection meta path source_span stack_trace stream_channel string_scanner term_glyph matcher] - test_core 0.3.12-nullsafety.5 [analyzer async args boolean_selector collection coverage glob io meta package_config path pedantic pool source_map_stack_trace source_maps source_span stack_trace stream_channel vm_service yaml matcher test_api] - timing 0.1.1+3 [json_annotation] - tuple 1.0.3 [quiver] - typed_data 1.3.0-nullsafety.3 [collection] - url_launcher_linux 0.0.1+4 [flutter] - url_launcher_macos 0.0.1+9 [flutter] - url_launcher_platform_interface 1.0.9 [flutter meta plugin_platform_interface] - url_launcher_web 0.1.5+3 [url_launcher_platform_interface flutter flutter_web_plugins meta] - url_launcher_windows 0.0.1+3 [flutter] - vector_math 2.1.0-nullsafety.3 - video_player_platform_interface 2.2.0 [flutter meta] - video_player_web 0.1.4+1 [flutter flutter_web_plugins meta video_player_platform_interface] - vm_service 5.5.0 [meta] - watcher 0.9.7+15 [async path pedantic] - web_socket_channel 1.2.0 [async crypto stream_channel] - webkit_inspection_protocol 0.7.5 [logging] - win32 1.7.4+1 [ffi] - xdg_directories 0.1.2 [meta path process] - xml 4.5.1 [collection convert meta petitparser] - yaml 2.2.1 [charcode collection string_scanner source_span] ```

markusaksli-nc commented 3 years ago

Hi @Ken-Lim Does the issue persist if you use the latest versions of the packages? This was fixed for a similar issue with auth email links https://github.com/FirebaseExtended/flutterfire/issues/4711. Thank you

Ken-Lim commented 3 years ago

Hi @markusaksli-nc, no issues found on the latest package. I have to upgrade to latest version I guess. Thanks for your response

markusaksli-nc commented 3 years ago

Closing this as solved