Java Android firebase在尝试访问存储时引发身份验证错误

Java Android firebase在尝试访问存储时引发身份验证错误,java,android,firebase,firebase-storage,Java,Android,Firebase,Firebase Storage,编辑:在清理项目并使缓存无效后,我刚刚重新启动了Android Studio。现在我得到了这个错误- E/StorageException: { "error": { "code": 403, "message": "Permission denied. Could not perform this operation" }} 我得到了下面的错误,它可以无限打印 2020-09-27 17:00:

编辑:在清理项目并使缓存无效后,我刚刚重新启动了Android Studio。现在我得到了这个错误-

E/StorageException: {  "error": {    "code": 403,    "message": 
"Permission denied. Could not perform this operation"  }}
我得到了下面的错误,它可以无限打印

2020-09-27 17:00:32.931 11755-11863/com.example.XXXXXX E/StorageUtil:获取令牌时出错java.util.concurrent.ExecutionException:com.google.firebase.internal.api.FirebaseNoSignedInUserException:请在尝试获取令牌之前登录

在我的应用程序中,我正确地创建了用户,并且
FirebaseAuth.getInstance().getCurrentUser()不返回null。但如果是这样,我会通过成功登录或创建另一个用户来处理。我的应用程序现在在不到半天的时间内创建了160多个用户。我想我甚至没有运行过这么多次的应用程序进行测试在身份验证设置中启用“使用电子邮件登录”和“匿名登录”选项

当我尝试访问存储时,问题开始出现。我得到了上面提到的auth令牌错误。文件夹和文件存在,这就是我试图下载文件的方式-

            fstore.child("gs://XXXXXX-XXXX.appspot.com/Books/XXXX").listAll().addOnSuccessListener(new OnSuccessListener<ListResult>() {
            @Override
            public void onSuccess(ListResult listResult) {
                for(StorageReference sref : listResult.getItems())
                {
                    tempFilename = sref.getName();
                    File tmpFile = new File(tempSubDir, tempFilename);
                    try {
                        tmpFile.createNewFile();
                        sref.getFile(tmpFile).addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Toast.makeText(tabtwoactivity.this, "File download failed!", Toast.LENGTH_LONG).show();
                                System.out.println("ERROR: "+ e.toString());
                            }
                        });
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    //System.out.println("IIIIII: "+sref.getName());
                }
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(tabtwoactivity.this, "Fetching Directory XXXXX Failed", Toast.LENGTH_LONG).show();
            }
        });
fstore.child(“gs://XXXXXX-XXXX.appspot.com/Books/XXXX”).listAll().addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公开作废(ListResult ListResult){
对于(StorageReference sref:listResult.getItems())
{
tempFilename=sref.getName();
文件tmpFile=新文件(tempSubDir,tempFilename);
试一试{
tmpFile.createNewFile();
sref.getFile(tmpFile).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(tabtwoactivity.this,“文件下载失败!”,Toast.LENGTH_LONG.show();
System.out.println(“错误:+e.toString());
}
});
}捕获(IOE异常){
e、 printStackTrace();
}
//System.out.println(“IIII:+sref.getName());
}
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(tabtwoactivity.this,“获取目录XXXXX失败”,Toast.LENGTH_LONG.show();
}
});
我尝试过使用
fstore.child(“XXXX”).listAll()
,但这给了我大量不同的错误,主要集中在
未找到的文件夹上。我的存储器中有文件夹和文件。我甚至玩过存储规则-
允许读、写
允许读、写:if request.auth=null
允许读、写:if请求。auth==null
。但什么都没用


我做错了什么?

将此粘贴到您的google.json中:

service firebase.storage {
  // The {bucket} wildcard indicates we match files in all storage buckets
  match /b/{bucket}/o {
    // Match filename
    match /filename {
      allow read: if true;
      allow write: if true;
    }
  }
}

你用你的谷歌账号登录过android studio吗?@Jandroid是的,我有。但是,这真的是一个足够大的因素来考虑吗?因为当我没有在Android工作室登录时,我有错误。但是这不是什么大问题。看起来Android工作室无法访问你的数据库。