firebase / FirebaseUI-Flutter

Apache License 2.0
99 stars 86 forks source link

🐛 [firebase_ui_auth] invalid password error message is inadequate #25

Closed graemep-nz closed 10 months ago

graemep-nz commented 1 year ago

Bug report

Using V1.2.1 latest from pub.dev - if you enter an incorrect password, the word "error" appears in red - but it is very hard to notice. image

It should say something like "The email address or password you entered is invalid" in bold red. Tested using the example app in the repo.

Flutter doctor

Run flutter doctor and paste the output below:

Click To Expand ``` [√] Flutter (Channel stable, 3.7.7, on Microsoft Windows [Version 10.0.22621.1555], locale en-NZ) [√] Windows Version (Installed version of Windows is version 10 or higher) [√] Android toolchain - develop for Android devices (Android SDK version 33.0.1) [√] Chrome - develop for the web [√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.4.1) [√] Android Studio (version 2022.1) [√] VS Code (version 1.70.2) [√] VS Code, 64-bit edition (version 1.77.1) [√] Connected device (3 available) [√] HTTP Host Availability • No issues found! ```

Flutter dependencies

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

Click To Expand ``` Dart SDK 2.19.4 Flutter SDK 3.7.7 firebase_with_flutter 1.0.0+1 dependencies: - cloud_firestore 4.5.1 [cloud_firestore_platform_interface cloud_firestore_web collection firebase_core firebase_core_platform_interface flutter meta] - cupertino_icons 1.0.5 - email_validator 2.1.17 - firebase_auth 4.4.1 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta] - firebase_auth_platform_interface 6.13.0 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface] - firebase_core 2.9.0 [firebase_core_platform_interface firebase_core_web flutter meta] - firebase_core_platform_interface 4.6.0 [collection flutter flutter_test meta plugin_platform_interface] - firebase_dynamic_links 5.1.0 [firebase_core firebase_core_platform_interface firebase_dynamic_links_platform_interface flutter meta plugin_platform_interface] - firebase_ui_auth 1.2.1 [email_validator firebase_auth firebase_core firebase_dynamic_links firebase_ui_localizations firebase_ui_oauth firebase_ui_shared flutter flutter_localizations flutter_svg] - firebase_ui_localizations 1.3.0 [flutter flutter_localizations intl path] - firebase_ui_oauth 1.2.1 [desktop_webview_auth firebase_auth firebase_ui_auth firebase_ui_shared flutter_svg flutter] - firebase_ui_oauth_apple 1.1.1 [firebase_auth firebase_ui_oauth flutter] - firebase_ui_oauth_facebook 1.1.1 [firebase_auth firebase_ui_oauth flutter flutter_facebook_auth] - firebase_ui_oauth_google 1.0.21 [firebase_auth firebase_ui_oauth flutter google_sign_in] - firebase_ui_oauth_twitter 1.1.1 [flutter firebase_auth firebase_ui_oauth twitter_login] - flutter 0.0.0 [characters collection js material_color_utilities meta vector_math sky_engine] - flutter_localizations 0.0.0 [flutter intl characters clock collection js material_color_utilities meta path vector_math] - flutter_svg 1.1.6 [flutter meta path_drawing vector_math xml] - google_fonts 4.0.3 [flutter http path_provider crypto] dev dependencies: - drive 1.0.0-1.0.nullsafety.5 [test_api flutter_test flutter_driver stack_trace flutter] - flutter_driver 0.0.0 [file flutter flutter_test fuchsia_remote_debug_protocol path meta vm_service webdriver archive async boolean_selector characters clock collection crypto js matcher material_color_utilities platform process source_span stack_trace stream_channel string_scanner sync_http term_glyph test_api typed_data vector_math] - flutter_facebook_auth 4.4.1+1 [flutter flutter_facebook_auth_platform_interface flutter_facebook_auth_web] - flutter_lints 2.0.1 [lints] - flutter_test 0.0.0 [flutter test_api path fake_async clock stack_trace vector_math async boolean_selector characters collection js matcher material_color_utilities meta source_span stream_channel string_scanner term_glyph] - google_sign_in 5.4.4 [flutter google_sign_in_android google_sign_in_ios google_sign_in_platform_interface google_sign_in_web] - http 0.13.5 [async http_parser meta path] - integration_test 0.0.0 [flutter flutter_driver flutter_test path vm_service archive async boolean_selector characters clock collection crypto fake_async file js matcher material_color_utilities meta source_span stack_trace stream_channel string_scanner sync_http term_glyph test_api typed_data vector_math webdriver] - mockito 5.4.0 [analyzer build code_builder collection dart_style matcher meta path source_gen test_api] - test 1.22.0 [analyzer async boolean_selector collection coverage http_multi_server io js node_preamble package_config path 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] - twitter_login 4.3.2 [crypto flutter http] transitive dependencies: - _fe_analyzer_shared 58.0.0 [meta] - _flutterfire_internals 1.1.0 [collection firebase_core firebase_core_platform_interface flutter meta] - analyzer 5.10.0 [_fe_analyzer_shared collection convert crypto glob meta package_config path pub_semver source_span watcher yaml] - archive 3.3.2 [crypto path] - args 2.4.0 - async 2.10.0 [collection meta] - boolean_selector 2.1.1 [source_span string_scanner] - build 2.3.1 [analyzer async convert crypto glob logging meta path] - built_collection 5.1.1 - built_value 8.4.4 [built_collection collection fixnum meta] - characters 1.2.1 - clock 1.1.1 - cloud_firestore_platform_interface 5.12.0 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface] - cloud_firestore_web 3.4.1 [_flutterfire_internals cloud_firestore_platform_interface collection firebase_core firebase_core_web flutter flutter_web_plugins js] - code_builder 4.4.0 [built_collection built_value collection matcher meta] - collection 1.17.0 - convert 3.1.1 [typed_data] - coverage 1.6.3 [args logging package_config path source_maps stack_trace vm_service] - crypto 3.0.2 [typed_data] - dart_style 2.3.0 [analyzer args path pub_semver source_span] - desktop_webview_auth 0.0.11 [crypto flutter http flutter_web_plugins plugin_platform_interface] - fake_async 1.3.1 [clock collection] - ffi 2.0.1 - file 6.1.4 [meta path] - firebase_auth_web 5.3.1 [firebase_auth_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins http_parser intl js meta] - firebase_core_web 2.3.0 [firebase_core_platform_interface flutter flutter_web_plugins js meta] - firebase_dynamic_links_platform_interface 0.2.4 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface] - firebase_ui_shared 1.1.0 [flutter] - fixnum 1.1.0 - flutter_facebook_auth_platform_interface 3.2.0 [flutter plugin_platform_interface] - flutter_facebook_auth_web 3.2.0 [flutter flutter_web_plugins js flutter_facebook_auth_platform_interface] - flutter_web_plugins 0.0.0 [flutter js characters collection material_color_utilities meta vector_math] - frontend_server_client 3.2.0 [async path] - fuchsia_remote_debug_protocol 0.0.0 [process vm_service file meta path platform] - glob 2.1.1 [async collection file path string_scanner] - google_sign_in_android 6.1.9 [flutter google_sign_in_platform_interface] - google_sign_in_ios 5.6.1 [flutter google_sign_in_platform_interface] - google_sign_in_platform_interface 2.4.0 [flutter plugin_platform_interface quiver] - google_sign_in_web 0.10.2+1 [flutter flutter_web_plugins google_sign_in_platform_interface js] - http_multi_server 3.2.1 [async] - http_parser 4.0.2 [collection source_span string_scanner typed_data] - intl 0.17.0 [clock path] - io 1.0.4 [meta path string_scanner] - js 0.6.5 [meta] - lints 2.0.1 - logging 1.1.1 - matcher 0.12.13 [meta stack_trace] - material_color_utilities 0.2.0 - meta 1.8.0 - mime 1.0.4 - node_preamble 2.0.2 - package_config 2.1.0 [path] - path 1.8.2 - path_drawing 1.0.1 [vector_math meta path_parsing flutter] - path_parsing 1.0.1 [vector_math meta] - path_provider 2.0.14 [flutter path_provider_android path_provider_foundation path_provider_linux path_provider_platform_interface path_provider_windows] - path_provider_android 2.0.25 [flutter path_provider_platform_interface] - path_provider_foundation 2.2.2 [flutter path_provider_platform_interface] - path_provider_linux 2.1.10 [ffi flutter path path_provider_platform_interface xdg_directories] - path_provider_platform_interface 2.0.6 [flutter platform plugin_platform_interface] - path_provider_windows 2.1.5 [ffi flutter path path_provider_platform_interface win32] - petitparser 5.1.0 [meta] - platform 3.1.0 - plugin_platform_interface 2.1.4 [meta] - pool 1.5.1 [async stack_trace] - process 4.2.4 [file path platform] - pub_semver 2.1.3 [collection meta] - quiver 3.2.1 [matcher] - shelf 1.4.0 [async collection http_parser path stack_trace stream_channel] - shelf_packages_handler 3.0.1 [path shelf shelf_static] - shelf_static 1.1.1 [convert http_parser mime path shelf] - shelf_web_socket 1.0.3 [shelf stream_channel web_socket_channel] - sky_engine 0.0.99 - source_gen 1.2.7 [analyzer async build dart_style glob path source_span yaml] - source_map_stack_trace 2.1.1 [path source_maps stack_trace] - source_maps 0.10.12 [source_span] - source_span 1.9.1 [collection path term_glyph] - stack_trace 1.11.0 [path] - stream_channel 2.1.1 [async] - string_scanner 1.2.0 [source_span] - sync_http 0.3.1 - term_glyph 1.2.1 - test_api 0.4.16 [async boolean_selector collection meta source_span stack_trace stream_channel string_scanner term_glyph matcher] - test_core 0.4.20 [analyzer async args boolean_selector collection coverage frontend_server_client glob io meta package_config path pool source_map_stack_trace source_maps source_span stack_trace stream_channel vm_service yaml matcher test_api] - typed_data 1.3.1 [collection] - vector_math 2.1.4 - vm_service 9.4.0 - watcher 1.0.2 [async path] - web_socket_channel 2.4.0 [async crypto stream_channel] - webdriver 3.0.1 [archive matcher path stack_trace sync_http] - webkit_inspection_protocol 1.2.0 [logging] - win32 3.1.4 [ffi] - xdg_directories 1.0.0 [meta path process] - xml 6.2.2 [collection meta petitparser] - yaml 3.1.1 [collection source_span string_scanner] ```

darshankawar commented 1 year ago

/cc @lesnitsky

lesnitsky commented 10 months ago

Duplicate of firebase/FirebaseUI-Flutter#45

Arik-AOS-dev commented 9 months ago

This issue seems far from closed... I get 3 different, unhelpful error messages across iOS, Android and Web. Of these iOS is by far the worst and imo is an unacceptable UX, making the SignInScreen UI unusable:

image

The Android message is marginally better, simply showing the following in red tex: 'An internal error has occurred. [ INVALID_LOGIN_CREDENTIALS ]'

While Web simply provides the word 'Error' in red text, as noted at the start of this thread.

lesnitsky commented 9 months ago

@Arik-AOS-dev I will investigate your findings, meanwhile you could use ErrorText.localizeError and ErrorText.localizePlatformError to provide your custom error message for specific firebase auth exceptions.

lesnitsky commented 9 months ago
Screenshot 2023-11-10 at 14 30 56

This is what I'm seeing on iOS.

@Arik-AOS-dev could you please make sure you are on the latest version of firebase_ui_auth and firebase_auth as well?

Arik-AOS-dev commented 9 months ago

Thanks for the quick response. I was 1 version behind and have now upgraded to the latest firebase_ui_auth 1.10.0 (from 1.9.1) and firebase_auth 4.13.0 (from 4.12.0). Unfortunately the issue remains unchanged for me.

I seem to recall I had the same issue when I went through the Firebase UI Auth codelab: https://firebase.google.com/codelabs/firebase-auth-in-flutter-apps#0 I'll go back and investigate that.

lesnitsky commented 9 months ago

Feel free to submit a new issue with reproduction steps if you have a consistent way to reproduce this behavior.

Arik-AOS-dev commented 9 months ago

Thanks @lesnitsky. I have spent some considerable time investigating and reproducing my issue above and have created a new Issue firebase/flutterfire#11903 to document my finding and hopefully offer some hints about where the issue lies.