gpt4 book ai didi

java - 无法为用户设置PhotoUri/位置不存在对象

转载 作者:太空宇宙 更新时间:2023-11-04 10:48:49 25 4
gpt4 key购买 nike

我尝试在创建用户个人资料时为用户使用 setPhotoUri,我首先使用两个单独的方法上传,然后获取 url,这两个方法都是从“createUserWithEmailAndPassword”方法中调用的,但我收到此错误消息:com.google.firebase.storage.StorageException:对象在位置不存在。

我找到了一些信息Here , HereHere ,尝试在我的代码上实现它,但没有任何效果。

这是用于创建用户的方法:

 auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Toast.makeText(SignupActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
// If sign in fails, display a message to the user. If sign in succeeds
// the auth state listener will be notified and logic to handle the
// signed in user can be handled in the listener.
if (!task.isSuccessful()) {
Toast.makeText(SignupActivity.this, "Authentication failed." + task.getException(),
Toast.LENGTH_SHORT).show();
} else {

user = auth.getCurrentUser();
if(user!=null){
uploadImage();
getImageUrl();

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setPhotoUri(downloadUri)
.setDisplayName(displayNameString).build();
user.updateProfile(profileUpdates);
FirebaseAuth.getInstance().signOut();
Intent intent = new Intent(SignupActivity.this, LoginActivity.class);
intent.putExtra("Email",user.getEmail());

if (user.getPhotoUrl()!=null){
intent.putExtra("Image",user.getPhotoUrl().toString());
}

startActivity(intent);
Toast.makeText(SignupActivity.this, "Verifique su contraseña",
Toast.LENGTH_SHORT).show();
}


}
}
});

以下是上传和获取 url 的方法:

 private void uploadImage() {

if(filePath != null)
{
ref = storageReference.child("UserProfileImages/"+user.getEmail() );
ref.putFile(filePath); //I checked on my project and the file is successfully uploaded.
}
}

//如果我使用 ref.toString(),结果与我的项目中文件的路径完美匹配

public void getImageUrl (){

ref.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {

downloadUri = uri;// The string(file link) that I need to use the setPhotoUri for my user.
Log.i("Class","Photo "+ downloadUri);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
Log.i("Class","an error occurred "+ exception.toString());
}
});
}

最佳答案

为了不收到此错误消息,需要先上传文件,等待文件存储,然后获取下载 URL。

我通过向 ref.putFile() 方法添加 oncompletelistener 解决了这个问题

关于java - 无法为用户设置PhotoUri/位置不存在对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48079055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com