Как загрузить фотографию пользователя из учетной записи Google в хранилище Firebase напрямую? - PullRequest
0 голосов
/ 08 ноября 2019

Для моего приложения для Android "Локально" я настраиваю знак Google. Однако при получении изображения профиля пользователя из его учетной записи Google и его загрузке в хранилище Firebase появляется сообщение об ошибке, отображаемое ниже.

Код для загрузки изображения:


  Uri imagePath=Uri.fromFile(newFile(Objects.requireNonNull(account.getPhotoUrl()).toString())); //account holds google signed in user.
  StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("profile_pic").child(firebaseAuth.getUid() + ".jpg"); //The picture is stored in Firebase storage inside profile_pic under the name UID.jpg
  UploadTask uploadTask = storageReference.putFile(imagePath);

Ошибка:

    2019-11-08 02:23:13.471 24564-24564/com.example.locally W/UploadTask: could not retrieve file size for upload file:///https%3A/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ%3Ds96-c
    java.io.FileNotFoundException: No such file or directory
        at android.os.Parcel.openFileDescriptor(Native Method)
        at android.os.ParcelFileDescriptor.openInternal(ParcelFileDescriptor.java:283)
        at android.os.ParcelFileDescriptor.open(ParcelFileDescriptor.java:200)
        at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:992)
        at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:850)
        at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:804)
        at com.google.firebase.storage.UploadTask.<init>(com.google.firebase:firebase-storage@@18.1.1:120)
        at com.google.firebase.storage.StorageReference.putFile(com.google.firebase:firebase-storage@@18.1.1:263)
        at com.example.locally.MainActivity.sendUserData(MainActivity.java:308)
        at com.example.locally.MainActivity.access$600(MainActivity.java:45)
        at com.example.locally.MainActivity$6.onComplete(MainActivity.java:290)
        at com.google.android.gms.tasks.zzj.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:165)
        at android.app.ActivityThread.main(ActivityThread.java:6375)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
2019-11-08 02:23:13.472 24564-24564/com.example.locally E/StorageException: /https:/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ=s96-c (No such file or directory)
    java.io.FileNotFoundException: /https:/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ=s96-c (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:146)
        at java.io.FileInputStream.<init>(FileInputStream.java:99)
        at android.content.ContentResolver.openInputStream(ContentResolver.java:715)
        at com.google.firebase.storage.UploadTask.<init>(com.google.firebase:firebase-storage@@18.1.1:133)
        at com.google.firebase.storage.StorageReference.putFile(com.google.firebase:firebase-storage@@18.1.1:263)
        at com.example.locally.MainActivity.sendUserData(MainActivity.java:308)
        at com.example.locally.MainActivity.access$600(MainActivity.java:45)
        at com.example.locally.MainActivity$6.onComplete(MainActivity.java:290)
        at com.google.android.gms.tasks.zzj.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:165)
        at android.app.ActivityThread.main(ActivityThread.java:6375)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
2019-11-08 02:23:13.474 24564-24564/com.example.locally I/MainActivity: Path to storage reference is :/profile_pic/xyF6h4jiPmXfKHR2huoUPqb0BJL2.jpg
2019-11-08 02:23:13.474 24564-25065/com.example.locally E/StorageException: /https:/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ=s96-c (No such file or directory)
    java.io.FileNotFoundException: /https:/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ=s96-c (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:146)
        at java.io.FileInputStream.<init>(FileInputStream.java:99)
        at android.content.ContentResolver.openInputStream(ContentResolver.java:715)
        at com.google.firebase.storage.UploadTask.<init>(com.google.firebase:firebase-storage@@18.1.1:133)
        at com.google.firebase.storage.StorageReference.putFile(com.google.firebase:firebase-storage@@18.1.1:263)
        at com.example.locally.MainActivity.sendUserData(MainActivity.java:308)
        at com.example.locally.MainActivity.access$600(MainActivity.java:45)
        at com.example.locally.MainActivity$6.onComplete(MainActivity.java:290)
        at com.google.android.gms.tasks.zzj.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:165)
        at android.app.ActivityThread.main(ActivityThread.java:6375)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
2019-11-08 02:23:13.475 24564-25065/com.example.locally E/StorageException: /https:/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ=s96-c (No such file or directory)
    java.io.FileNotFoundException: /https:/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ=s96-c (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:146)
        at java.io.FileInputStream.<init>(FileInputStream.java:99)
        at android.content.ContentResolver.openInputStream(ContentResolver.java:715)
        at com.google.firebase.storage.UploadTask.<init>(com.google.firebase:firebase-storage@@18.1.1:133)
        at com.google.firebase.storage.StorageReference.putFile(com.google.firebase:firebase-storage@@18.1.1:263)
        at com.example.locally.MainActivity.sendUserData(MainActivity.java:308)
        at com.example.locally.MainActivity.access$600(MainActivity.java:45)
        at com.example.locally.MainActivity$6.onComplete(MainActivity.java:290)
        at com.google.android.gms.tasks.zzj.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:165)
        at android.app.ActivityThread.main(ActivityThread.java:6375)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
2019-11-08 02:23:13.476 24564-25065/com.example.locally E/StorageException: /https:/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ=s96-c (No such file or directory)
    java.io.FileNotFoundException: /https:/lh3.googleusercontent.com/a-/AAuE7mCsY-OdcDUxIVOR53uN3waXR0-OPD5P4EmGdvR_AQ=s96-c (No such file or directory)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:146)
        at java.io.FileInputStream.<init>(FileInputStream.java:99)
        at android.content.ContentResolver.openInputStream(ContentResolver.java:715)
        at com.google.firebase.storage.UploadTask.<init>(com.google.firebase:firebase-storage@@18.1.1:133)
        at com.google.firebase.storage.StorageReference.putFile(com.google.firebase:firebase-storage@@18.1.1:263)
        at com.example.locally.MainActivity.sendUserData(MainActivity.java:308)
        at com.example.locally.MainActivity.access$600(MainActivity.java:45)
        at com.example.locally.MainActivity$6.onComplete(MainActivity.java:290)
        at com.google.android.gms.tasks.zzj.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:754)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:165)
        at android.app.ActivityThread.main(ActivityThread.java:6375)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)

ошибка в строке:

    UploadTask uploadTask = storageReference.putFile(imagePath);

Я просто хочу сохранить фотографию профиля пользователя его аккаунта Google в firebaseхранилище внутри папки profile_pic.

1 Ответ

1 голос
/ 08 ноября 2019

Вы можете загружать файлы в облачное хранилище с помощью Firebase SDK 3 способами:

  1. из данных в памяти
  2. из потока
  3. из локального файла

Нет возможности загрузки с (нелокального) URL. Поэтому сначала вам нужно загрузить файл, а затем загрузить его в облачное хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...