firebase - 当我想获取我的图片下载链接 Flutter 时遇到问题(请求没有应用检查令牌。)
问题描述
获取上传到 Firebase 的照片的下载链接时,我遇到了这样的错误。在此处输入图像描述
来源:Github
uploadImageToFirebase() async {
File yuklenecekDosya = _imagefile!;
firebase_storage.Reference referansYol = firebase_storage
.FirebaseStorage.instance
.ref()
.child("Profilresimleri")
.child(user!.uid)
.child("profilresmi.png");
firebase_storage.UploadTask yuklemeGorevi =
referansYol.putFile(yuklenecekDosya);
yuklemeGorevi.then((s) {
if (s.state.toString() == firebase_storage.TaskState.success.toString()) {
downloadURL = referansYol.getDownloadURL().toString();
print(referansYol.getDownloadURL().toString());
print(referansYol.getDownloadURL().toString());
print(referansYol.getDownloadURL().toString());
print(referansYol.getDownloadURL().toString());
print(referansYol.getDownloadURL().toString());
}
});
//= await firebase_storage.FirebaseStorage.instance
// .ref('Profilresimleri/${user!.uid}/profilresmi.png')
//.getDownloadURL();
await firestore
.collection("Users")
.doc(user!.uid)
.set({"profilfotolink": downloadURL}, SetOptions(merge: true));
}
问题
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
2
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
I/chatty ( 3803): uid=10148(com.example.ekinoks_elektron) FirestoreWorker identical 3 lines
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
I/flutter ( 3803): Instance of 'Future<String>'
I/chatty ( 3803): uid=10148(com.example.ekinoks_elektron) 1.ui identical 3 lines
I/flutter ( 3803): Instance of 'Future<String>'
6
W/NetworkRequest( 3803): No App Check token for request.
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Ldalvik/system/CloseGuard;->close()V (greylist,core-platform-api, linking, allowed)
W/kinoks_elektro( 3803): Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (greylist,core-platform-api, linking, allowed)
解决方案
在代码中,Firestore 的set()
方法在上传完成之前被调用。上传的执行应该返回 String 但它的异步行为是在执行发生之前预期await
的(这就是你让 Future 登录控制台的原因)。您应该等待存储以上传文件。
所以最终的代码将是:
uploadImageToFirebase() async {
File yuklenecekDosya = _imagefile!;
firebase_storage.Reference referansYol = firebase_storage
.FirebaseStorage.instance
.ref()
.child("Profilresimleri")
.child(user!.uid)
.child("profilresmi.png");
firebase_storage.UploadTask yuklemeGorevi =
referansYol.putFile(yuklenecekDosya);
await yuklemeGorevi.then((s) {
if (s.state.toString() == firebase_storage.TaskState.success.toString()) {
downloadURL = referansYol.getDownloadURL().toString();
print("Download URL: $downloadURL");
}
});
await firestore
.collection("Users")
.doc(user!.uid)
.set({"profilfotolink": downloadURL}, SetOptions(merge: true));
}
推荐阅读
- swift - NSMallocException:从 CGDataProvider 加载时无法增加缓冲区
- loops - 在 Jekyll 中,如何在循环外捕获年份和月份?
- php - Laravel 资源暂时不可用无法取消设置
- javascript - 如何从服务器实时获取数据以更新我的 chartjs 图表?
- laravel - 我不明白为什么我收到 403 禁止?
- android - ListView 仅显示一个带有 height = "wrap_content" 的元素
- javascript - 决定一个函数将使用哪些 webpack.resolve.modules
- python - 尝试解析由数据库返回的数据结构,但不确定最佳方法
- android-studio - 找不到方法 buildTypes()
- reactjs - React 导航中的动态 rightComponent