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:
Hi @xkxeeshankhan
Providing wrong password isn't giving PlatformExcpetion using official example on web

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:
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
This is now handled, please see https://firebase.flutter.dev/docs/auth/error-handling