Flutterfire: [firebase_auth_web] _FirebaseErrorWrapper Exception instead of PlatformException when providing wrong password

Created on 30 Jun 2020  Â·  6Comments  Â·  Source: FirebaseExtended/flutterfire

Flutter for Web, in case of Firebase auth throw _FirebaseErrorWrapper exception instead of PlatformException, so for that we have to use a catch block to handle different scenarios to handle all kind of exception thrown by Firebase auth

SOLUTION
Please change _FirebaseErrorWrapper to PlatformException so its matched the Flutter for Mobile exception handling and are easier to maintain

Error message
The exception that I received is like this:
FirebaseError: The password is invalid or the user does not have a password. (auth/wrong-password)
Type: _FirebaseErrorWrapper

Version:
firebase_auth: ^0.16.0
Scripts:

customer-response web auth needs-repro bug

All 6 comments

Hi @xkxeeshankhan
Providing wrong password isn't giving PlatformExcpetion using official example on web

Screenshot 2020-06-30 at 7 11 08 PM 1


flutter doctor -v

[✓] Flutter (Channel dev, 1.20.0-2.0.pre, on Mac OS X 10.15.5 19F101, locale en-GB)
    • Flutter version 1.20.0-2.0.pre at /Users/tahatesser/Code/flutter_dev
    • Framework revision 15a28159bc (7 days ago), 2020-06-23 04:52:58 -0700
    • Engine revision 91a63d6a44
    • Dart version 2.9.0 (build 2.9.0-19.0.dev 7e72c9ae7e)


[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    • Android SDK at /Users/tahatesser/Code/sdk
    • Platform android-30, build-tools 30.0.0
    • ANDROID_HOME = /Users/tahatesser/Code/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    • CocoaPods version 1.9.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 47.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.46.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.12.0

[✓] Connected device (4 available)
    • SM M305F      • 32003c30dc19668f • android-arm64  • Android 10 (API 29)
    • macOS desktop • macos            • darwin-x64     • Mac OS X 10.15.5 19F101
    • Web Server    • web-server       • web-javascript • Flutter Tools
    • Chrome        • chrome           • web-javascript • Google Chrome 83.0.4103.116

• No issues found!

Can you please provide your flutter doctor -v your flutter run --verbose with exception/error and a complete reproducible minimal code sample
Thank you

Hi @TahaTesser,
Thanks for the clarification but i'm receiving all failures cases in catch block (and i catch is used to handle exceptions) of try catch instead of PlatformException in case of web:

flutter doctor -v:

- [✓] Flutter (Channel beta, v1.14.6, on Mac OS X 10.15.3 19D76, locale en-US)
    • Flutter version 1.14.6 at /Users/muhammad/Software/flutterBeta
    • Framework revision fabeb2a16f (5 months ago), 2020-01-28 07:56:51 -0800
    • Engine revision c4229bfbba
    • Dart version 2.8.0 (build 2.8.0-dev.5.0 fc3af737c7)


[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/muhammad/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 29.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3.1, Build version 11C504
    • CocoaPods version 1.8.4

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[!] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] IntelliJ IDEA Community Edition (version 2019.3.3)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 45.1.2
    • Dart plugin version 193.6494.35

[✓] VS Code (version 1.46.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.12.0

[✓] Connected device (2 available)
    • Chrome     • chrome     • web-javascript • Google Chrome 83.0.4103.116
    • Web Server • web-server • web-javascript • Flutter Tools

! Doctor found issues in 1 category.
- **flutter run -d chrome  --verbose**
[  +58 ms] executing: [/Users/muhammad/Software/flutterBeta/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +66 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[        ] fabeb2a16f1d008ab8230f450c49141d35669798
[        ] executing: [/Users/muhammad/Software/flutterBeta/] git describe --match v*.*.* --first-parent --long --tags
[  +20 ms] Exit code 0 from: git describe --match v*.*.* --first-parent --long --tags
[        ] v1.14.6-0-gfabeb2a16
[  +18 ms] executing: [/Users/muhammad/Software/flutterBeta/] git rev-parse --abbrev-ref --symbolic @{u}
[  +21 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[        ] origin/beta
[        ] executing: [/Users/muhammad/Software/flutterBeta/] git ls-remote --get-url origin
[  +19 ms] Exit code 0 from: git ls-remote --get-url origin
[        ] https://github.com/flutter/flutter.git
[ +115 ms] executing: [/Users/muhammad/Software/flutterBeta/] git rev-parse --abbrev-ref HEAD
[  +29 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[        ] beta
[  +12 ms] executing: sw_vers -productName
[  +33 ms] Exit code 0 from: sw_vers -productName
[        ] Mac OS X
[        ] executing: sw_vers -productVersion
[  +30 ms] Exit code 0 from: sw_vers -productVersion
[        ] 10.15.3
[        ] executing: sw_vers -buildVersion
[  +30 ms] Exit code 0 from: sw_vers -buildVersion
[        ] 19D76
[  +68 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[   +9 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +79 ms] executing: /Users/muhammad/Library/Android/sdk/platform-tools/adb devices -l
[  +11 ms] Exit code 0 from: /Users/muhammad/Library/Android/sdk/platform-tools/adb devices -l
[   +1 ms] List of devices attached
[  +42 ms] executing: /Users/muhammad/Software/flutterBeta/bin/cache/artifacts/libimobiledevice/idevice_id -h
[ +121 ms] executing: /usr/bin/xcode-select --print-path
[   +9 ms] Exit code 0 from: /usr/bin/xcode-select --print-path
[        ] /Applications/Xcode.app/Contents/Developer
[   +1 ms] executing: /usr/bin/xcodebuild -version
[ +306 ms] Exit code 0 from: /usr/bin/xcodebuild -version
[        ] Xcode 11.3.1
           Build version 11C504
[   +7 ms] /usr/bin/xcrun simctl list --json devices
[ +277 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +271 ms] Found plugin cloud_firestore at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.6/
[  +19 ms] Found plugin cloud_firestore_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-0.1.1+2/
[  +29 ms] Found plugin connectivity at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/connectivity-0.4.8+6/
[   +3 ms] Found plugin connectivity_macos at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/connectivity_macos-0.1.0+3/
[  +30 ms] Found plugin firebase_auth at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.16.1/
[  +11 ms] Found plugin firebase_auth_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.1.3+1/
[   +7 ms] Found plugin firebase_core at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.5/
[   +7 ms] Found plugin firebase_core_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/
[ +138 ms] Found plugin shared_preferences at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.7+3/
[   +4 ms] Found plugin shared_preferences_macos at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-0.0.1+10/
[   +4 ms] Found plugin shared_preferences_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-0.1.2+7/
[ +142 ms] Found plugin cloud_firestore at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.6/
[   +3 ms] Found plugin cloud_firestore_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-0.1.1+2/
[   +4 ms] Found plugin connectivity at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/connectivity-0.4.8+6/
[   +1 ms] Found plugin connectivity_macos at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/connectivity_macos-0.1.0+3/
[  +15 ms] Found plugin firebase_auth at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.16.1/
[   +3 ms] Found plugin firebase_auth_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.1.3+1/
[   +8 ms] Found plugin firebase_core at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.5/
[   +3 ms] Found plugin firebase_core_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/
[ +186 ms] Found plugin shared_preferences at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.7+3/
[   +7 ms] Found plugin shared_preferences_macos at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-0.0.1+10/
[   +4 ms] Found plugin shared_preferences_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-0.1.2+7/
[ +166 ms] Generating
/Volumes/Projects/Zeeshan/grocerynowadmin/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java
[ +380 ms] Launching lib/main.dart on Chrome in debug mode...
[   +1 ms] Building application for the web...
[ +484 ms] Found plugin cloud_firestore at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-0.13.6/
[   +3 ms] Found plugin cloud_firestore_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-0.1.1+2/
[   +3 ms] Found plugin connectivity at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/connectivity-0.4.8+6/
[   +1 ms] Found plugin connectivity_macos at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/connectivity_macos-0.1.0+3/
[  +13 ms] Found plugin firebase_auth at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_auth-0.16.1/
[   +2 ms] Found plugin firebase_auth_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-0.1.3+1/
[   +1 ms] Found plugin firebase_core at /Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_core-0.4.5/
[   +2 ms] Found plugin firebase_core_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-0.1.1+2/
[  +53 ms] Found plugin shared_preferences at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences-0.5.7+3/
[   +2 ms] Found plugin shared_preferences_macos at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-0.0.1+10/
[   +4 ms] Found plugin shared_preferences_web at
/Users/muhammad/Software/flutterBeta/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-0.1.2+7/
[+14916 ms] Starting daemon...
[ +605 ms] Initializing inputs
[  +76 ms] Reading cached asset graph...
[ +853 ms] Reading cached asset graph completed, took 853ms

[ +581 ms] Checking for updates since last build...
[+2105 ms] Checking for updates since last build completed, took 2.1s

[  +18 ms] Initializing inputs
[   +4 ms] Reading cached asset graph...
[        ] Reading cached asset graph completed, took 853ms
[        ] Checking for updates since last build...
[        ] Checking for updates since last build completed, took 2.1s
[+3269 ms] About to build [web]...
[  +10 ms] Running build...
[ +966 ms] 1.0s elapsed, 67/74 actions completed.
[+1008 ms] 2.0s elapsed, 214/221 actions completed.
[+1099 ms] 3.1s elapsed, 308/319 actions completed.
[+1091 ms] 4.2s elapsed, 310/328 actions completed.
[+1014 ms] 5.2s elapsed, 312/328 actions completed.
[+1085 ms] 6.3s elapsed, 318/328 actions completed.
[+1098 ms] 7.4s elapsed, 319/328 actions completed.
[+1002 ms] 8.4s elapsed, 321/330 actions completed.
[+1097 ms] 9.5s elapsed, 326/331 actions completed.
[+1004 ms] 10.5s elapsed, 333/334 actions completed.
[+1095 ms] 11.6s elapsed, 340/342 actions completed.
[ +575 ms] Running build completed, took 11.9s

[        ] Caching finalized dependency graph...
[  +11 ms] Caching finalized dependency graph completed, took 305ms

[  +11 ms] Succeeded after 12.2s with 240 outputs (489 actions)

[  +24 ms] Building application for the web... (completed in 35.2s)
[        ] Attempting to connect to browser instance..
[+10201 ms] Debug service listening on ws://127.0.0.1:51648/HarPwSKX_lQ=

[ +586 ms]       Failed to load asset at path: packages/build_web_compilers/src/dev_compiler/dart_sdk.js.

                          Status code: 404

                          Headers:
                          {
                      "date": "Tue, 30 Jun 2020 14:19:44 GMT",
                      "content-length": "9",
                      "x-frame-options": "SAMEORIGIN",
                      "content-type": "text/plain; charset=utf-8",
                      "x-xss-protection": "1; mode=block",
                      "x-content-type-options": "nosniff",
                      "server": "dart:io with Shelf",
                      "via": "1.1 shelf_proxy"
                    }

                          Content:
                          Not Found}

[  +66 ms] Attempting to connect to browser instance.. (completed in 10.9s)

Exception/Errors:

  1. FirebaseError: There is no user record corresponding to this identifier. The user may have
    been deleted. (auth/user-not-found)
  2. FirebaseError: The password is invalid or the user does not have a password. (auth/wrong-password)

Code snip:

Future<Either<AuthFailure, AuthSuccess>> signIn(
      String email, String password) async {
    try {
      print(
          "signIn $email $password ");
      AuthResult result = await _firebaseAuth
          .signInWithEmailAndPassword(email: email, password: password)
          .timeout(Duration(seconds: 10), onTimeout: () {
        throw PlatformException(
            code: "TIME_OUT", message: "Time out to request server");
      });

      print(result);
      if (result != null) {
        DocumentSnapshot documentSnapshot = await _firestore
            .collection(USER_KEY)
            .document(result.user.uid)
            .get();

        if (documentSnapshot != null) {
          UserModel userModel =
              UserModel.fromJson(documentSnapshot.data).copyWith(
            uid: documentSnapshot.documentID,
            email: email,
          );
          if (userModel.role == "OWNER") {
            await userModel.saveUserRecordInPrefs();
            return right(AuthSuccess.signedIn());
          } else {
            _firebaseAuth.signOut();
            return left(
                AuthFailure.serverError(message: "User is not authorized"));
          }
        }
      }
      _firebaseAuth.signOut();
      return left(AuthFailure.serverError(message: "User data is deleted"));
    } on PlatformException catch (e) {
      print(e);
      if (e.code == 'ERROR_WRONG_PASSWORD' ||
          e.code == 'ERROR_INVALID_CREDENTIAL' ||
          e.code == 'ERROR_ACCOUNT_EXISTS_WITH_DIFFERENT_CREDENTIAL' ||
          e.code == 'ERROR_USER_NOT_FOUND') {
        return left(AuthFailure.invalidCredentials());
      }
      return left(AuthFailure.exception(message: e.message));
    } catch (e) {
      print("$e");
      if (e.toString().contains("auth/wrong-password") ||
          e.toString().contains("auth/user-not-found")) {
        return left(AuthFailure.invalidCredentials());
      }
      if (e.toString().contains('auth/too-many-requests')) {
        return left(AuthFailure.exception(
            message: "Too many reqeust. Please try again later"));
      }
      return left(AuthFailure.exception(message: e.toString()));
    }
    // print("HERE");
  }

I believe I'm also experiencing this issue. Every error I get from my callable cloud function is a _FirebaseErrorWrapper, which is not a type that I can access to interrogate.

Here is the response JSON payload from my cloud function when I attempt to signup without providing an email address:

{"error":{"message":"No email provided.","status":"INVALID_ARGUMENT"}}

I have a try/catch where I handle any unknown exception (an exception that is not a PlatformException):

print('Unknown exception during user sign up: $exception');
print(' - ${exception.runtimeType}');

Those print statements lead to the following logs:

Unknown exception during user sign up: FirebaseError: No email provided. (invalid-argument)
 - _FirebaseErrorWrapper

The failure information in the JSON is what I expect, but it's being packaged into this inaccessible error type.

Here are my JS includes:

<script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-firestore.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.15.5/firebase-functions.js"></script>

Here are my pubspec deps:

firebase_auth: ^0.16.1
cloud_firestore: ^0.13.5
cloud_functions: ^0.5.0

Here is my Flutter version info:

Flutter 1.20.0-8.0.pre.40 • channel master • https://github.com/flutter/flutter.git
Framework • revision 6eaaf1650e (3 days ago) • 2020-07-09 18:04:37 -0700
Engine • revision 9b3e3410f0
Tools • Dart 2.9.0 (build 2.9.0-20.0.dev 06cb010247)

This is being handled as part of the rework in #2582

Was this page helpful?
0 / 5 - 0 ratings