我已经使用Firebase实现了身份验证过程,我的用户现在应该可以添加数据并将其显示在用户特定的比例上(每个用户都有自己的数据)。
根据我的阅读,我可以将数据添加到数据库中:
private void setData() {
// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Message");
myRef.setValue("Hello World !");
}
但是在控制台中,所有用户都可以访问数据,Firebase数据库是否应该用于存储用户特定数据?如果是这样,那怎么可能实现呢?
打扰一下,如果我的问题很明显,但我对这些原则并不熟悉。
答案 0 :(得分:2)
为每个用户创建唯一标识符,并在该唯一标识符下托管每个用户的数据。可以使用您喜欢的任何方法(例如设备的UDID)或通过简单地获取经过身份验证的用户的firebase uid来创建唯一ID。例如,如果您想要在没有Firebase的情况下访问uid,则可能会有以下情况。
private void setData() {
String uniqueId = java.util.UUID;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Message");
myRef.child(uniqueId).setValue("Hello World !");
}
但是,建议使用通过Firebase身份验证生成的uid。第一个示例中断的情况是,如果同一用户使用同一帐户登录到两个不同的设备,这将阻止他们从原始设备访问他们自己的数据,因为每个设备将具有不同的uuids。另一方面,Firebase uid在每个设备上都是相同的,因此两个设备上的同一用户可以访问相同的数据。如果你想访问firebase uid(推荐):
private void setData() {
FirebaseUser user = firebaseAuth.getCurrentUser();
String uniqueId = user.getUid()
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("Message");
myRef.child(uniqueId).setValue("Hello World !");
}