Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 [firebase_UI_auth] "credential linked" callback not getting called #11115

Closed
graemep-nz opened this issue Jun 12, 2023 · 4 comments · Fixed by #11168
Closed

🐛 [firebase_UI_auth] "credential linked" callback not getting called #11115

graemep-nz opened this issue Jun 12, 2023 · 4 comments · Fixed by #11168
Assignees
Labels
plugin: ui resolution: fixed A fix has been merged or is pending merge from a PR. type: bug Something isn't working

Comments

@graemep-nz
Copy link

Bug report

If someone registers using google federated login, then on the profile page they add an additional signin method of email/password, they are asked for email address and password. The profile page updates correctly to show the second login method. If the user has entered a different email address from their google federated login, an email is sent to the users old google email address telling them that their email address has been changed to the new one. The new email address becomes the users primary email address on firebase - accessible via user.email. However the system (the example app) fails to immediately verify the users new email address. If they log out and back in, they do get asked to verify the new email address. The system should immediately ask them to verify the new email address without them logging out and back in. I tried adding an auth state change for "credential linked" to the profile screen constructor but it did not get triggered.

      return ProfileScreen(
        actions: [
          AuthStateChangeAction<CredentialLinked>((context, state) {
            if (!state.user.emailVerified) {
              Navigator.pushNamed(context, '/verify-email');
            } else {
              Navigator.pushReplacementNamed(context, '/profile');
            }

Steps to reproduce

Use the example app and follow the description above.

Expected behavior

The user should be asked to verify their email address immediately, possibly via the CredentialLinked callback.

Sample project

Use the example app on pub.dev
https://pub.dev/packages/firebase_ui_auth

Flutter doctor

Click To Expand ``` Doctor summary (to see all details, run flutter doctor -v): [√] Flutter (Channel stable, 3.7.12, on Microsoft Windows [Version 10.0.22621.1702], 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.2) [√] VS Code (version 1.78.2) [√] VS Code, 64-bit edition (version 1.77.3) [√] Connected device (3 available) [√] HTTP Host Availability

• No issues found!

</details>

---

### Flutter dependencies

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

<details><summary>Click To Expand</summary>

Dart SDK 2.19.6
Flutter SDK 3.7.12
my_bridge_app 1.0.0+1

dependencies:

  • cloud_firestore 4.8.0 [cloud_firestore_platform_interface cloud_firestore_web collection firebase_core firebase_core_platform_interface flutter meta]
  • cloud_functions 4.3.2 [cloud_functions_platform_interface cloud_functions_web firebase_core firebase_core_platform_interface flutter]
  • country_codes 2.2.0 [flutter]
  • cupertino_icons 1.0.5
  • device_info_plus 9.0.2 [device_info_plus_platform_interface ffi file flutter flutter_web_plugins meta win32 win32_registry]
  • email_validator 2.1.17
  • firebase_auth 4.6.2 [firebase_auth_platform_interface firebase_auth_web firebase_core firebase_core_platform_interface flutter meta]
  • firebase_auth_platform_interface 6.15.2 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
  • firebase_core 2.13.1 [firebase_core_platform_interface firebase_core_web flutter meta]
  • firebase_core_platform_interface 4.8.0 [collection flutter flutter_test meta plugin_platform_interface]
  • firebase_dynamic_links 5.3.2 [firebase_core firebase_core_platform_interface firebase_dynamic_links_platform_interface flutter meta plugin_platform_interface]
  • firebase_messaging 14.6.2 [firebase_core firebase_core_platform_interface firebase_messaging_platform_interface firebase_messaging_web flutter meta]
  • firebase_storage 11.2.2 [firebase_core firebase_core_platform_interface firebase_storage_platform_interface firebase_storage_web flutter]
  • firebase_ui_auth 1.4.2 [email_validator firebase_auth firebase_core firebase_dynamic_links firebase_ui_localizations firebase_ui_oauth firebase_ui_shared flutter flutter_localizations]
  • firebase_ui_localizations 1.5.0 [flutter flutter_localizations path]
  • firebase_ui_oauth 1.4.2 [desktop_webview_auth firebase_auth firebase_ui_auth firebase_ui_shared flutter_svg flutter]
  • firebase_ui_oauth_apple 1.2.2 [firebase_auth firebase_ui_oauth flutter]
  • firebase_ui_oauth_facebook 1.2.1 [firebase_auth firebase_ui_oauth flutter flutter_facebook_auth]
  • firebase_ui_oauth_google 1.2.2 [firebase_auth firebase_ui_oauth flutter google_sign_in]
  • firebase_ui_oauth_twitter 1.2.2 [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_secure_storage 8.0.0 [flutter flutter_secure_storage_linux flutter_secure_storage_macos flutter_secure_storage_platform_interface flutter_secure_storage_web flutter_secure_storage_windows meta]
  • flutter_svg 2.0.5 [flutter vector_graphics vector_graphics_codec vector_graphics_compiler]
  • google_fonts 4.0.4 [flutter http path_provider crypto]
  • hive 2.2.3 [meta crypto]
  • hive_flutter 1.1.0 [flutter hive path_provider path]
  • material_design_icons_flutter 6.0.7096 [flutter]
  • scroll_to_index 3.0.1 [flutter]

dev dependencies:

  • drive 0.1.0 [test_api flutter_test flutter_driver stack_trace universal_platform 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 6.1.3 [flutter google_sign_in_android google_sign_in_ios google_sign_in_platform_interface google_sign_in_web]
  • http 0.13.6 [async http_parser meta]
  • 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.4.0 [crypto flutter http]

transitive dependencies:

  • _fe_analyzer_shared 61.0.0 [meta]
  • _flutterfire_internals 1.3.2 [collection firebase_core firebase_core_platform_interface flutter meta]
  • analyzer 5.13.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.1
  • async 2.10.0 [collection meta]
  • boolean_selector 2.1.1 [source_span string_scanner]
  • build 2.4.0 [analyzer async convert crypto glob logging meta package_config path]
  • built_collection 5.1.1
  • built_value 8.6.0 [built_collection collection fixnum meta]
  • characters 1.2.1
  • clock 1.1.1
  • cloud_firestore_platform_interface 5.15.0 [_flutterfire_internals collection firebase_core flutter meta plugin_platform_interface]
  • cloud_firestore_web 3.6.0 [_flutterfire_internals cloud_firestore_platform_interface collection firebase_core firebase_core_web flutter flutter_web_plugins js]
  • cloud_functions_platform_interface 5.4.2 [firebase_core flutter meta plugin_platform_interface]
  • cloud_functions_web 4.5.2 [cloud_functions_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins js]
  • code_builder 4.5.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.1 [analyzer args path pub_semver source_span]
  • desktop_webview_auth 0.0.12 [crypto flutter http flutter_web_plugins plugin_platform_interface]
  • device_info_plus_platform_interface 7.0.0 [flutter meta plugin_platform_interface]
  • fake_async 1.3.1 [clock collection]
  • ffi 2.0.2
  • file 6.1.4 [meta path]
  • firebase_auth_web 5.5.2 [firebase_auth_platform_interface firebase_core firebase_core_web flutter flutter_web_plugins http_parser js meta]
  • firebase_core_web 2.5.0 [firebase_core_platform_interface flutter flutter_web_plugins js meta]
  • firebase_dynamic_links_platform_interface 0.2.6+2 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
  • firebase_messaging_platform_interface 4.5.2 [_flutterfire_internals firebase_core flutter meta plugin_platform_interface]
  • firebase_messaging_web 3.5.2 [_flutterfire_internals firebase_core firebase_core_web firebase_messaging_platform_interface flutter flutter_web_plugins js meta]
  • firebase_storage_platform_interface 4.4.2 [collection firebase_core flutter meta plugin_platform_interface]
  • firebase_storage_web 3.6.2 [_flutterfire_internals async firebase_core firebase_core_web firebase_storage_platform_interface flutter flutter_web_plugins http js meta]
  • firebase_ui_shared 1.3.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_secure_storage_linux 1.1.3 [flutter flutter_secure_storage_platform_interface]
  • flutter_secure_storage_macos 3.0.0 [flutter flutter_secure_storage_platform_interface]
  • flutter_secure_storage_platform_interface 1.0.1 [flutter plugin_platform_interface]
  • flutter_secure_storage_web 1.1.1 [flutter flutter_secure_storage_platform_interface flutter_web_plugins js]
  • flutter_secure_storage_windows 2.0.0 [flutter flutter_secure_storage_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.2 [async collection file path string_scanner]
  • google_identity_services_web 0.2.1 [js meta]
  • google_sign_in_android 6.1.14 [flutter google_sign_in_platform_interface]
  • google_sign_in_ios 5.6.2 [flutter google_sign_in_platform_interface]
  • google_sign_in_platform_interface 2.4.1 [flutter plugin_platform_interface quiver]
  • google_sign_in_web 0.12.0+1 [flutter flutter_web_plugins google_identity_services_web google_sign_in_platform_interface http 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.2.0
  • 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_parsing 1.0.1 [vector_math meta]
  • path_provider 2.0.15 [flutter path_provider_android path_provider_foundation path_provider_linux path_provider_platform_interface path_provider_windows]
  • path_provider_android 2.0.27 [flutter path_provider_platform_interface]
  • vector_graphics 1.1.5 [flutter vector_graphics_codec]
  • vector_graphics_codec 1.1.5
  • vector_graphics_compiler 1.1.5 [args meta path_parsing xml vector_graphics_codec]
  • 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 4.1.4 [ffi]
  • win32_registry 1.1.0 [ffi win32]
  • xdg_directories 1.0.0 [meta path process]
  • xml 6.2.2 [collection meta petitparser]
  • yaml 3.1.2 [collection source_span string_scanner]

</details>

---
@graemep-nz graemep-nz added Needs Attention This issue needs maintainer attention. type: bug Something isn't working labels Jun 12, 2023
@darshankawar darshankawar added the triage Issue is currently being triaged. label Jun 12, 2023
@darshankawar
Copy link

Thanks for the report @graemep-nz
Can you try by reloading the user profile using FirebaseAuth.instance.currentUser.reload() and see if it helps in the case described ?

@darshankawar darshankawar added blocked: customer-response Waiting for customer response, e.g. more information was requested. and removed Needs Attention This issue needs maintainer attention. labels Jun 12, 2023
@graemep-nz
Copy link
Author

graemep-nz commented Jun 12, 2023

Whereabouts do I put that code? Adding it to code shown above will definitely not help because it doesn't get executed again.

@google-oss-bot google-oss-bot added Needs Attention This issue needs maintainer attention. and removed blocked: customer-response Waiting for customer response, e.g. more information was requested. labels Jun 12, 2023
@graemep-nz graemep-nz changed the title 🐛 [firebase_UI_auth] 🐛 [firebase_UI_auth] "credential linked" callback not getting called Jun 12, 2023
@darshankawar
Copy link

Thanks for the feedback. Using the plugin example, seeing the same behavior as reported.

@darshankawar darshankawar added plugin: ui and removed Needs Attention This issue needs maintainer attention. triage Issue is currently being triaged. labels Jun 13, 2023
@lesnitsky
Copy link
Member

lesnitsky commented Jun 21, 2023

@graemep-nz assuming this is reproducible on web (since CredentialLinked is properly propagated on other platforms), #11168 should fix it.

@lesnitsky lesnitsky self-assigned this Jun 23, 2023
@darshankawar darshankawar added the resolution: fixed A fix has been merged or is pending merge from a PR. label Jul 13, 2023
@firebase firebase locked and limited conversation to collaborators Aug 13, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
plugin: ui resolution: fixed A fix has been merged or is pending merge from a PR. type: bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants