web-dev-qa-db-ja.com

Firebase Token Authenticationエラー

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.

私はそれをググったが、それに対する答えを得ることができなかった! Firebaseでサインインしました。

12

ファイルをアップロードする前に署名しなかったと思います。ランチャーアクティビティのonCreate()で、このコードを試してください

FirebaseAuth mAuth = FirebaseAuth.getInstance(); 

次に、onStart()で、

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

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);
            }
        });
}

これはあなたの問題を解決するかもしれません

16
SmartAndroidian

私は同じ問題に直面していましたが、デフォルトでは、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.

Firebaseを使用しない独自の認証プロセスがあったため、Firebaseコンソールでストレージルールを変更することにしました。

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
    allow read, write;
    }
  }
}

注:ルールを変更すると、すべてのユーザーがFirebaseクラウドサーバーにファイルをアップロードできます。

4

たぶん、Firebaseを「始める」ことができないのかもしれません。プロジェクトを作成したので、Android Studio IDEでfirebase storageに接続しますが、コンソールで手動で「開始」する必要があると言っています。

1
Rodrigo Moraes

以下の手順は私のために働きました:

  1. パッケージIDを使用して、Firebaseから適切なgoogle-services.jsonを生成しました

  2. Build.gradle(app)

     dependencies {
    
     compile 'com.google.firebase:firebase-storage:10.2.0'
     compile 'com.google.firebase:firebase-auth:10.2.0'
     compile 'com.google.firebase:firebase-core:10.2.0'
     compile 'com.google.firebase:firebase-database:10.2.0'
     compile 'com.firebase:firebase-client-Android:2.4.0'
     }
    
  3. Build.gradle(プロジェクトルートフォルダー)に以下の依存関係を必ず追加してください

    dependencies {
    
    classpath 'com.Android.tools.build:gradle:2.2.3'
    classpath 'com.google.gms:google-services:3.0.0'
    
    }
    
  4. アクティビティでファイルをダウンロードするときに、次のコードを追加します。

    // Declaration reference
    private StorageReference storageRef;
    
    
    private void downloadImageFromFireBase()
    {
    showProgressDialog("Downloading image..");
    
    storageRef = storage.getReferenceFromUrl("gs://XXX.appspot.com/").child("av"+ datePassed +".jpg");
    showImageFromFireBaseDataBase();
    }
    
    private void showImageFromFireBaseDataBase()
    {
        try {
            final File localFile = File.createTempFile("images", "jpg");
            final Bitmap[] bitmap = new Bitmap[1];
                storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
                        Log.e("Test", "success!");
                        bitmap[0] = BitmapFactory.decodeFile(localFile.getAbsolutePath());
                        raysImage.setImageBitmap(bitmap[0]);
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        Log.e("Test", "fail :( " + exception.getMessage());
                    }
                });
            }catch(IOException e){
            Log.e("ImageView",e.toString());
            }
        }
    
1
Sanjay Mallur

これはインターネット接続のような単純なものである可能性があります。つまり、すべてのコードが正しく、Firebase上のすべてのユーザーを認証した場合です。

0
liam