更新用户个人资料照片不会使用currentUser.photoUrl

时间:2020-03-28 23:52:20

标签: android firebase kotlin google-cloud-firestore firebase-authentication

我拍了张照片,然后更新了当前用户的照片,以将此更改应用于经过Firebase身份验证的用户。

将这张照片更新为经过身份验证的用户后,我所看到的是像最初登录应用程序一样以字符串形式获取photoUrl

suspend fun updatePhoto(uri: Uri): Resource<Unit>{
        val currentUser = FirebaseAuth.getInstance().currentUser
        val profileUpdates = UserProfileChangeRequest.Builder().setPhotoUri(uri).build()
        currentUser!!.updateProfile(profileUpdates).await()
        currentUser.reload().await()
        val userData = hashMapOf<String,Any>()
        userData["photoUrl"] = currentUser.photoUrl.toString()
        FirebaseFirestore
            .getInstance()
            .collection("user")
            .document(currentUser.uid).set(userData, SetOptions.merge()).await()
        return Resource.Success(Unit)
    }

在这一行userData["photoUrl"] = currentUser.photoUrl.toString(),我希望实际的photoUrl在firebase中更新,并且我得到一个本地file://my.com.app/cache/photo.jpg的Uri

如果我从身份验证本身更新了用户照片,firebase不会处理更新后的照片,需要将当前用户更新的实际照片退还给我吗?

我想避免使用Firebase存储上传照片并将其放置在数据库中,而是直接从更新后的用户照片中检索照片

1 个答案:

答案 0 :(得分:3)

设置Firebase Auth用户照片的URL时,它不会获取该图像的内容并将其存储。您可能从应用程序的另一部分传递了该文件URL,现在,它可以按预期返回相同的字符串。

我认为没有什么方法可以避免将该映像上传到可以为您托管该映像的服务,例如Cloud Storage。