当用户使用Facebook登录(当前唯一的登录方式)并想要发布内容时,我运行一些代码来首先上传其个人资料图片,以便其他用户可以看到原始海报是谁。看来我可以获得用户的个人资料图片Uri,例如(取自调试模式):
https://graph.facebook.com/(FACEBOOKID)/picture?height=200&width=200&migration_overrides=%7Boctober_2012%3Atrue%7D

但是,当我运行时:

StorageReference posterPicture = mStorage.child("UsersPictures").child(profile.facebookID);
        posterPicture.putFile(profile.profilePictureURI).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {...});


引发错误,提示“没有内容提供者”


  W / System.err:java.io.FileNotFoundException:没有内容提供者:https://graph.facebook.com/(FACEBOOKID)/picture?height=200&width=200&migration_overrides=%7Boctober_2012%3Atrue%7D
  
  错误代码:-13000,
  
  HTTP响应码:0


谢谢

最佳答案

简短的答案是URI必须是文件系统上的文件(必须下载并重新上传),或者需要一个可以处理HTTPS方案文件的内容解析器。

也就是说,我对您的问题是:为什么?该文件已经托管在Facebook上,并且可以通过该URL轻松检索,那么为什么要再次上传呢?您可以非常轻松地在Firebase实时数据库中存储和共享该URL,而无需付费在Firebase Storage中进行托管。

07-24 09:48
查看更多