Rules To Firebase Storage
rules_version = '2';
// service firebase.storage {
// match /b/{bucket}/o {
// match /{allPaths=**} {
// allow read, write: if true;
// }
// }
// }
service firebase.storage {
// Only a user can upload their file, but anyone can view it
match /users/{userId}/{fileName} {
allow read;
allow write: if true;
}
}
Login Code
Future loginUser() async {
{
auth.authStateChanges().listen((User user) {
if (user == null) {
//print('User is currently signed out!');
}
});
isSignedIn = true;
final user = await gSignIn.signIn();
if (user == null) {
isSignedIn = false;
return;
} else {
final googleAuth = await user.authentication;
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
await auth.signInWithCredential(credential);
print(credential);
isSignedIn = false;
}
}
// saveUserInfoToFireStore();
// await gSignIn
// .signIn()
// .then((gSignInAccount) => controlSignIn(gSignInAccount));
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) => HomePage()),
// );
}
Compress Image
String status = '';
String imageUrl;
bool isLoading;
Future compressingImage() async {
final tDirectory = await getTemporaryDirectory();
final path = tDirectory.path;
ImD.Image mImageFile = ImD.decodeImage(eImage.readAsBytesSync());
final compressedImageFile = File('$path/img$postId.jpg')
..writeAsBytesSync(ImD.encodeJpg(mImageFile, quality: 99));
setState(() {
eImage = compressedImageFile;
});
}
Upload Photo to Firebase Storage
Future<String> uploadPhoto(mImageFile) async {
await gCurrentUser.authentication;
final StorageReference reference =
FirebaseStorage.instance.ref().child("Event Banners");
StorageUploadTask mStorageUploadTask =
reference.child("post_$postId.jpg").putFile(mImageFile);
StorageTaskSnapshot storageTaskSnapshot =
await mStorageUploadTask.onComplete;
String downloadUrl = await storageTaskSnapshot.ref.getDownloadURL(); //Getting error here
return downloadUrl;
}
Error Received: Storage Exception:
E/StorageException(13107): StorageException has occurred.
E/StorageException(13107): User is not authenticated, please authenticate using Firebase Authentication and try again.
E/StorageException(13107): Code: -13020 HttpResult: 401
E/StorageException(13107): The server has terminated the upload session
E/StorageException(13107): java.io.IOException: The server has terminated the upload session
E/StorageException(13107): at com.google.firebase.storage.UploadTask.serverStateValid(UploadTask.java:331)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.shouldContinue(UploadTask.java:300)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.run(UploadTask.java:221)
E/StorageException(13107): at com.google.firebase.storage.StorageTask.lambda$getRunnable$7(StorageTask.java:1072)
E/StorageException(13107): at com.google.firebase.storage.StorageTask$$Lambda$12.run(Unknown Source:2)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/StorageException(13107): at java.lang.Thread.run(Thread.java:923)
E/StorageException(13107): Caused by: java.io.IOException: { "error": { "code": 401, "message": "Firebase App Check token is invalid." }}
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.sendWithRetry(UploadTask.java:467)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.beginResumableUpload(UploadTask.java:268)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.run(UploadTask.java:216)
E/StorageException(13107): ... 5 more
E/StorageException(13107): StorageException has occurred.
E/StorageException(13107): User is not authenticated, please authenticate using Firebase Authentication and try again.
E/StorageException(13107): Code: -13020 HttpResult: 401
E/StorageException(13107): The server has terminated the upload session
E/StorageException(13107): java.io.IOException: The server has terminated the upload session
E/StorageException(13107): at com.google.firebase.storage.UploadTask.serverStateValid(UploadTask.java:331)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.shouldContinue(UploadTask.java:300)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.run(UploadTask.java:221)
E/StorageException(13107): at com.google.firebase.storage.StorageTask.lambda$getRunnable$7(StorageTask.java:1072)
E/StorageException(13107): at com.google.firebase.storage.StorageTask$$Lambda$12.run(Unknown Source:2)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/StorageException(13107): at java.lang.Thread.run(Thread.java:923)
E/StorageException(13107): Caused by: java.io.IOException: { "error": { "code": 401, "message": "Firebase App Check token is invalid." }}
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.sendWithRetry(UploadTask.java:467)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.beginResumableUpload(UploadTask.java:268)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.run(UploadTask.java:216)
E/StorageException(13107): ... 5 more
E/StorageException(13107): StorageException has occurred.
E/StorageException(13107): User is not authenticated, please authenticate using Firebase Authentication and try again.
E/StorageException(13107): Code: -13020 HttpResult: 401
E/StorageException(13107): The server has terminated the upload session
E/StorageException(13107): java.io.IOException: The server has terminated the upload session
E/StorageException(13107): at com.google.firebase.storage.UploadTask.serverStateValid(UploadTask.java:331)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.shouldContinue(UploadTask.java:300)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.run(UploadTask.java:221)
E/StorageException(13107): at com.google.firebase.storage.StorageTask.lambda$getRunnable$7(StorageTask.java:1072)
E/StorageException(13107): at com.google.firebase.storage.StorageTask$$Lambda$12.run(Unknown Source:2)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/StorageException(13107): at java.lang.Thread.run(Thread.java:923)
E/StorageException(13107): Caused by: java.io.IOException: { "error": { "code": 401, "message": "Firebase App Check token is invalid." }}
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.sendWithRetry(UploadTask.java:467)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.beginResumableUpload(UploadTask.java:268)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.run(UploadTask.java:216)
E/StorageException(13107): ... 5 more
E/StorageException(13107): StorageException has occurred.
E/StorageException(13107): User is not authenticated, please authenticate using Firebase Authentication and try again.
E/StorageException(13107): Code: -13020 HttpResult: 401
E/StorageException(13107): The server has terminated the upload session
E/StorageException(13107): java.io.IOException: The server has terminated the upload session
E/StorageException(13107): at com.google.firebase.storage.UploadTask.serverStateValid(UploadTask.java:331)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.shouldContinue(UploadTask.java:300)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.run(UploadTask.java:221)
E/StorageException(13107): at com.google.firebase.storage.StorageTask.lambda$getRunnable$7(StorageTask.java:1072)
E/StorageException(13107): at com.google.firebase.storage.StorageTask$$Lambda$12.run(Unknown Source:2)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/StorageException(13107): at java.lang.Thread.run(Thread.java:923)
E/StorageException(13107): Caused by: java.io.IOException: { "error": { "code": 401, "message": "Firebase App Check token is invalid." }}
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.sendWithRetry(UploadTask.java:467)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.beginResumableUpload(UploadTask.java:268)
E/StorageException(13107): at com.google.firebase.storage.UploadTask.run(UploadTask.java:216)
E/StorageException(13107): ... 5 more
E/StorageException(13107): StorageException has occurred.
E/StorageException(13107): User is not authenticated, please authenticate using Firebase Authentication and try again.
E/StorageException(13107): Code: -13020 HttpResult: 401
E/StorageException(13107): { "error": { "code": 401, "message": "Firebase App Check token is invalid." }}
E/StorageException(13107): java.io.IOException: { "error": { "code": 401, "message": "Firebase App Check token is invalid." }}
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:434)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:451)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:442)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272)
E/StorageException(13107): at com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:286)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:70)
E/StorageException(13107): at com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:62)
E/StorageException(13107): at com.google.firebase.storage.GetDownloadUrlTask.run(GetDownloadUrlTask.java:76)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/StorageException(13107): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/StorageException(13107): at java.lang.Thread.run(Thread.java:923)
D/ViewRootImpl[MainActivity](13107): windowFocusChanged hasFocus=false inTouchMode=true
W/vent_managemen(13107): Accessing hidden method Ldalvik/system/CloseGuard;->close()V (greylist,core-platform-api, linking, allowed)
Lost connection to device.
Exited (sigterm)

I was facing the same issue. After the constant work of two days, I came to know that in the debug mode, its important to give SHA1 debug key in firebase console of your project otherwise FirebaseStorage wouldn't allow you to upload files to Firebase storage no matters if you have already given release SHA1 or SHA-256 keys.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With