Firebase令牌身份验证错误

Cha*_*iva 12 android firebase firebase-realtime-database firebase-storage

我正在使用firebase存储来上传文件,但是当我上传时,我收到了这个错误

E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.android.gms.internal.zzand: Please sign in before trying to get a token.
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索但无法得到答案!我已经登录了firebase.

Sma*_*ian 16

我认为您在上传文件之前没有签名.在启动器活动的onCreate()中,尝试此代码

FirebaseAuth mAuth = FirebaseAuth.getInstance(); 
Run Code Online (Sandbox Code Playgroud)

然后在onStart()中,

FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
  // do your stuff
} else {
  signInAnonymously();
}
Run Code Online (Sandbox Code Playgroud)

signInAnonymously()

private void signInAnonymously() {
    mAuth.signInAnonymously().addOnSuccessListener(this, new  OnSuccessListener<AuthResult>() {
            @Override
            public void onSuccess(AuthResult authResult) {
                // do your stuff
            }
        })
        .addOnFailureListener(this, new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {
                Log.e(TAG, "signInAnonymously:FAILURE", exception);
            }
        });
}
Run Code Online (Sandbox Code Playgroud)

这可以解决您的问题

  • 您需要通过Firebase控制台中的"身份验证 - >登录方法"启用匿名登录,以便您的应用执行此操作. (5认同)

Ill*_*ent 8

我遇到了同样的问题,这是因为默认情况下,firebase 只允许从已通过身份验证的用户上传文件。

在 storage util 异常上方可能有类似于此的日志:

E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.android.gms.internal.zzajb: Please sign in before trying to get a token.
Run Code Online (Sandbox Code Playgroud)

我们有自己的身份验证过程,不使用 firebase,所以我们决定更改 firebase 控制台中的存储规则。

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
    allow read, write;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

注意:更改规则将允许任何用户将文件上传到您的 Firebase 云服务器。