2016-10-15 42 views
6

Tôi đang sử dụng lưu trữ căn cứ hỏa lực để upload file, nhưng khi tôi tải lên tôi nhận được lỗi nàycăn cứ hỏa lực Mã xác thực lỗi

E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.android.gms.internal.zzand: Please sign in before trying to get a token. 

Tôi googled nó, nhưng không thể có được câu trả lời cho nó! Tôi đã đăng nhập, trong cơ sở firebase.

+0

Bạn có thể đăng một số mã bổ sung để chúng tôi có thể xem xét những gì bạn đang thực sự làm và lý tưởng lặp lại nó không? Xem http: // stackoverflow.com/help/mcve để biết thêm thông tin về điều này :) –

Trả lời

7

Tôi nghĩ bạn không đăng nhập trước khi tải tệp lên. Trong onCreate() hoạt động launcher, hãy thử mã này

FirebaseAuth mAuth = FirebaseAuth.getInstance(); 

Sau đó, trong 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); 
      } 
     }); 
} 

Điều này có thể giải quyết vấn đề của bạn

+0

luôn có trong onFailure :-( –

+3

Bạn cần bật đăng nhập ẩn danh thông qua "Authentication-> SIGN-IN METHOD" trong bảng điều khiển Firebase để ứng dụng của bạn thực hiện việc này. – Gary99

1

Các bước bên dưới đã hiệu quả với tôi:

  1. tạo thích hợp google-services.json từ căn cứ hỏa lực với gói ID

  2. Trong build.gradle (ứng dụng)

    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. Hãy chắc chắn rằng bạn thêm dưới đây phụ thuộc vào build.gradle (root dự án thư mục)

    dependencies { 
    
    classpath 'com.android.tools.build:gradle:2.2.3' 
    classpath 'com.google.gms:google-services:3.0.0' 
    
    } 
    
  4. trong khi tải tập tin trong hoạt động của bạn thêm đoạn mã sau:

    lưu trữ riêngBộ nhớ lưu trữRef;

    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()); 
         } 
        } 
    
+0

câu trả lời được cung cấp ở đây đã giúp tôi trong bộ chuyển đổi chế độ xem Recycle, cảm ơn –

2

tôi đã phải đối mặt với cùng một vấn đề và nó được gây ra bởi vì căn cứ hỏa lực mặc định sẽ chỉ cho phép copy dữ liệu từ người dùng của đã được chứng thực.

Phía trên lưu trữ util ngoại lệ có thể có một bản ghi tương tự như sau:

E/StorageUtil: error getting token java.util.concurrent.ExecutionException: com.google.android.gms.internal.zzajb: Please sign in before trying to get a token. 

Chúng tôi đã có quá trình xác thực của chúng ta mà không sử dụng căn cứ hỏa lực vì vậy chúng tôi quyết định thay đổi các quy tắc lưu trữ trong giao diện điều khiển căn cứ hỏa lực.

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

Lưu ý: Thay đổi các quy tắc sẽ cho phép bất kỳ người dùng upload file lên máy chủ đám mây căn cứ hỏa lực của bạn.

0

Nó có thể là một cái gì đó đơn giản như kết nối internet, đó là nếu tất cả các mã của bạn là chính xác và bạn đã xác thực tất cả người dùng trên firebase.

1

Có thể bạn không thể "bắt đầu" với Firebase. Tôi nói rằng vì tôi đã tạo một dự án, hãy kết nối với bộ nhớ Firebase bằng Android Studio IDE, nhưng tôi phải "bắt đầu" theo cách thủ công trên bảng điều khiển.

Các vấn đề liên quan