我有一个有很多聊天室的应用程序,每个聊天室都显示成员用户的个人资料图片。 为了快速加载,我将这些 URL 存储在实时数据库中的每个房间下。 但是,如果任何用户更新了他们的头像,那么存储的 URL 显然就没有用了。 但是,如果我可以仅使用他们的 UID 获取任何用户的当前图像 URL,这将不再是一个问题。
如果这不可能,是否有任何其他常见做法可以让用户的图像保持最新状态,而不必在每次更改个人资料时更新包含他们作为成员的所有房间实例的每条记录图片?
最佳答案
您最好的选择是将 imageURL 存储到您的用户 ID 中
要做到这一点,只需更改存储照片的引用
例如获取用户ID
FirebaseAuth mAuth;
mAuth = FirebaseAuth.getInstance();
uid = mAuth.getCurrentUser().getUid();
然后在你的引用中作为例子
mDatabase.child("users").child(uid).child("user_photo").setValue(your_download_url);
请记住,照片的下载 URL 是从您的存储引用任务中获取的。
因此,当您需要检索每个用户的照片时,只需访问他们的引用并添加一个值事件监听器以使用 dataSnapshot 获取数据并使用 Glide 显示图像
编辑
如果你在你的应用程序中进行谷歌登录登录,这可以工作,你可以获得用户个人资料照片而无需将任何内容保存到数据库
您可以在不将其保存到 firebase 的情况下获取登录信息(只需使用 google 登录) https://developers.google.com/identity/sign-in/android/people
这样你就可以获取个人资料照片 URL,然后使用 Glide 来显示它
关于firebase - 有没有办法只使用他们的 Uid 来检索任何用户的 PhotoUrl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50516673/