我的应用程序有很多聊天室,每个聊天室都显示成员用户的个人资料图片。 为了快速加载,我将这些URL存储在实时数据库中的每个房间下。 但是,如果任何用户更新其个人资料图片,则存储的URL显然是无用的。 但是,如果我可以仅使用他们的UID获取任何用户的当前图像URL,那么这将不再是一个问题。
如果无法做到这一点,是否有任何其他常见做法可以使用户的图像保持最新状态,而不必每次更新其个人资料时更新包含其成员的所有房间实例中的每条记录图片?
答案 0 :(得分:2)
您最好的选择是将imageURL存储到您的用户ID中
要执行此操作,只需更改存储照片的参考
例如,获取用户ID
public class SOShipLineSplitPXExt : PXCacheExtension<SOShipLineSplit>
{
// Your custom fields here
}
namespace Unassigned
{
public class SOShipLineSplitPXExt : PXCacheExtension<SOShipLineSplit>
{
// Your custom fields here
}
}
namespace Table
{
public class SOShipLineSplitPXExt : PXCacheExtension<PX.Objects.SO.Table.SOShipLineSplit>
{
// Your custom fields here
}
}
然后在你的参考文献中
FirebaseAuth mAuth;
mAuth = FirebaseAuth.getInstance();
uid = mAuth.getCurrentUser().getUid();
请记住,照片的下载网址是从您的存储参考任务中获取的。
因此,当您需要检索每个用户照片时,只需访问其参考并添加值事件侦听器以使用dataSnapshot获取数据并使用Glide显示图像
修改强>
如果你在你的应用中登录登录谷歌登录,这可以工作,你可以获得用户个人资料照片而不保存任何数据库
您可以在不将其保存到firebase的情况下获取登录信息(只需使用Google登录) https://developers.google.com/identity/sign-in/android/people
因此您可以获取个人资料照片网址,然后使用Glide显示
答案 1 :(得分:0)
您可以使用Firebase Admin SDK按admin.auth().getUser(uid)
.then(function(userRecord) {
console.log(userRecord.photoURL):
})
.catch(function(error) {
// Error occurred.
});
查找用户:
"current": {
"condition": {
"text": "Sunny",
"icon": "//cdn.apixu.com/weather/64x64/day/113.png",
"code": 1000
},
"wind_mph": 4.3,
"wind_kph": 6.8,