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でサインインしました。
ファイルをアップロードする前に署名しなかったと思います。ランチャーアクティビティの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);
}
});
}
これはあなたの問題を解決するかもしれません
私は同じ問題に直面していましたが、デフォルトでは、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クラウドサーバーにファイルをアップロードできます。
たぶん、Firebaseを「始める」ことができないのかもしれません。プロジェクトを作成したので、Android Studio IDEでfirebase storageに接続しますが、コンソールで手動で「開始」する必要があると言っています。
以下の手順は私のために働きました:
パッケージIDを使用して、Firebaseから適切なgoogle-services.jsonを生成しました
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'
}
Build.gradle(プロジェクトルートフォルダー)に以下の依存関係を必ず追加してください
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.3'
classpath 'com.google.gms:google-services:3.0.0'
}
アクティビティでファイルをダウンロードするときに、次のコードを追加します。
// 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());
}
}
これはインターネット接続のような単純なものである可能性があります。つまり、すべてのコードが正しく、Firebase上のすべてのユーザーを認証した場合です。