firebase - 有没有办法只使用他们的 Uid 来检索任何用户的 PhotoUrl?

标签 firebase firebase-realtime-database firebase-authentication

我有一个有很多聊天室的应用程序,每个聊天室都显示成员用户的个人资料图片。 为了快速加载,我将这些 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/

相关文章:

javascript - 无法使用非对象作为目标或处理程序创建代理

javascript - Firebase 存储在 Express 服务器环境中不工作

java - 如何从设备本身发送 Firebase 推送通知?

ios - 我应该在 firebase 中使用查询还是使用 observe 函数?

android - Firebase 实时数据库 - 自动生成主键

使用 CanActivate 的 AngularFire2 (4.0) 身份验证不起作用

javascript - 使用 NodeJS 的 Firebase 身份验证

java - 反序列化错误时使 Firestore 缓存无效

android - 在 ListView 中显示 firebase 子对象

javascript - 在 Reactjs 中使用 firebase 电话身份验证时出现 "firebaseApp.auth.RecaptchaVerifier is not a constructor"错误