【发布时间】:2020-08-12 07:30:36
【问题描述】:
在创建我的用户期间,我将您的照片插入到 Firebase 存储数据库中(如下面的方法所示):
final StorageReference ref = FirebaseStorage.getInstance().getReference("/images/"+barNomeUser.getText().toString()+"perfilFoto");
ref.putFile(uriSelecionada) // Insere a foto selecionada no Storage
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Log.i("Url do firebase", uri.toString());
uriSelecionada = uri;
String uuid = FirebaseAuth.getInstance().getUid();
final String nameUser = barNomeUser.getText().toString(); //
String profileFotoUrl = uriSelecionada.toString();
final UserApp userApp = new UserApp(uuid, nameUser, profileFotoUrl, 0, 0, 0, 0);
UserProfileChangeRequest profileChangeRequest = new UserProfileChangeRequest.Builder()
.setDisplayName(nameUser).setPhotoUri(uri).build();
firebaseUser.updateProfile(profileChangeRequest).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Log.i("Register full", firebaseUser.getDisplayName());
}
} ...
但是,我注意到它消耗了大量的数据库内存,我意识到 cloudFunctions storage-resize 函数可以解决我的问题......它甚至解决了它,但是,它产生了另一个更大的问题,原始图像在调整大小后被删除,这使得以前的访问令牌(由 getDownloadUrl 方法获取)不再有效,因为该图像已从存储中删除,现在存在的是一个新图像和一个新令牌,使用户没有“照片”在个人资料中,如果调整大小的过程可能需要长达 60 秒的时间,而且还有时间查询数据库,我怎么能拉出调整大小的图像来更新我的用户的个人资料照片?
【问题讨论】:
-
您是否在使用“调整图像大小”Firebase 扩展程序? firebase.google.com/products/extensions/storage-resize-images
-
是的,正是这个
标签: android firebase google-cloud-functions google-cloud-storage firebase-extensions