【问题标题】:no auth token for request W/StorageUtil(12124): Error getting App Check token; using placeholder token instead. Error: No AppCheckProvider installed没有请求 W/StorageUtil(12124) 的授权令牌:获取 App Check 令牌时出错;改用占位符标记。错误:未安装 AppCheckProvider
【发布时间】:2023-01-31 07:43:43
【问题描述】:

my app 我正在制作简单的 flutter 项目以在 firebase 上上传图像文件,我已经完成了所有代码,似乎将 firebase 集成到我的 flutter 应用程序中没有任何错误,因为应用程序不会崩溃。我可以选择图片,但是当我单击上传按钮时出现此错误: E/StorageException(12124):在 com.google.firebase.storage.network.NetworkRequest.parseResponse(NetworkRequest.java:445) E/StorageException(12124):在 com.google.firebase.storage.network.NetworkRequest.parseErrorResponse(NetworkRequest.java:462) E/StorageException(12124):在 com.google.firebase.storage.network.NetworkRequest.processResponseStream(NetworkRequest.java:453) E/StorageException(12124):在 com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:272) E/StorageException(12124):在 com.google.firebase.storage.network.NetworkRequest.performRequest(NetworkRequest.java:289) E/StorageException(12124):在 com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:76) E/StorageException(12124):在 com.google.firebase.storage.internal.ExponentialBackoffSender.sendWithExponentialBackoff(ExponentialBackoffSender.java:68) E/StorageException(12124):在 com.google.firebase.storage.UploadTask.sendWithRetry(UploadTask.java:477) E/StorageException(12124):在 com.google.firebase.storage.UploadTask.beginResumableUpload(UploadTask.java:276) E/StorageException(12124):在 com.google.firebase.storage.UploadTask.run(UploadTask.java:224) E/StorageException(12124): ... 5 个以上

这是我的两个按钮的代码:

import 'dart:io';

import 'package:file_picker/file_picker.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:image_picker/image_picker.dart';
import 'package:imageupload/storage_service.dart';

class ImageUpload extends StatefulWidget {
  const ImageUpload({Key? key}) : super(key: key);

  @override
  State<ImageUpload> createState() => _ImageUploadState();
}

class _ImageUploadState extends State<ImageUpload> {
  UploadTask? task;
  File? imageFile;
  

  @override
  Widget build(BuildContext context) {
    final Storage storage = Storage();
    return Scaffold(
      appBar: AppBar(
        title: const Text("Image Upload Demo"),
      ),
      body: Container(
        width: double.maxFinite,
        // decoration: BoxDecoration(),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: [
            Text("Select image"),
            Container(
              alignment: Alignment.center,
              child: Column(children: [
                Row(
                  mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                  children: [
                    Container(
                      width: 150,
                      height: 50,
                      child: ElevatedButton(
                        onPressed: () async {
                          selectFile();
                        },
                        child: Text("selact Image"),
                      ),
                    ),
                    Container(
                      width: 150,
                      height: 50,
                      child: ElevatedButton(
                          onPressed: () {
                            uploadFile();
                            // pickImage();
                          },
                          child: Text("Upload Image")),
                    ),
                  ],
                )
              ]),
            ),
            // imageFile != null
            //     ? Container(
            //         height: 300, width: 200, child: Image.file(imageFile!))
            //     : Text("No Image selected"),
          ],
        ),
      ),
    );
  }

  Future selectFile() async {
    final result = await FilePicker.platform.pickFiles(allowMultiple: false);
    if (result == null) return;
    final path = result.files.single.path!;
    setState(() {
      imageFile = File(path);
    });

    print("Files selected");
  }

  Future uploadFile() async {
    if (imageFile == null) return;
    final fileName = imageFile!.path;
    final destination = 'images/$fileName';
    Storage.uploadFile(destination, imageFile!);
    print("Files selected");
  }
}

这是将图像上传到 firebase 的代码:

import 'dart:io';
import 'package:firebase_storage/firebase_storage.dart';
// import 'package:firebase_core/firebase_core.dart' as firebase_core;

class Storage {
  static UploadTask? uploadFile(String destination, File file) {
    try {
      final ref = FirebaseStorage.instance.ref(destination);

      return ref.putFile(file);
    } on FirebaseException catch (e) {
      print(e);
    }
  }
  
}

我没有启用 firebase 的 appCheck 功能,我已经通过以下方式授予 firebase 项目中的所有用户权限:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if true;
    }
  }
}

我已经尝试制作另一个 firebase 项目并连接到我的 flutter 项目,但我仍然遇到同样的错误,我没有看到确切的答案,我尝试了许多其他方法但它没有用。

【问题讨论】:

    标签: flutter firebase


    【解决方案1】:
    rules_version = '2';
    service firebase.storage {
      match /b/{bucket}/o {
        match /{allPaths=**} {
          allow read, write;
        }
     }
    

    【讨论】:

      猜你喜欢
      • 2022-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2017-05-01
      • 2019-07-07
      • 1970-01-01
      相关资源
      最近更新 更多