【发布时间】:2018-08-23 09:36:55
【问题描述】:
当以用户身份登录我的应用程序时,我希望该用户能够访问他们自己的特定维护记录。据推测,这将使用用户使用 Firebase Auth 注册应用程序后生成的 UID 来完成。
维护活动
private boolean updateMaintenance(String title, String desc, String id, String primary, String secondary, String property) {
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference("maintenance").child(id);
Maintenance maintenance = new Maintenance (id, title, desc, primary, secondary, property);
databaseReference.setValue(maintenance);
Toast.makeText(this, "Maintenance Updated Updated Successfully", Toast.LENGTH_LONG).show();
return true;
}
private void addMaintenance(){
String title = editTextTitle.getText().toString().trim();
String desc = editTextDesc.getText().toString().trim();
String primary = spinnerPrimary.getSelectedItem().toString();
String secondary = spinnerSecondary.getSelectedItem().toString();
String property = spinnerProperty.getSelectedItem().toString();
if(!TextUtils.isEmpty(title)){
String id = databaseMaintenance.push().getKey();
Maintenance maintenance = new Maintenance (id, title, desc, primary, secondary, property);
databaseMaintenance.child(id).setValue(maintenance);
Toast.makeText(this, "Maintenance Added", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "You must enter a maintenance record", Toast.LENGTH_LONG).show();
}
}
登录活动
这是我目前实施的。目前,我可以使用 Firebase 存储的凭据登录,但是始终显示保存在 Firebase 数据库中的维护记录。无论谁登录。
Auth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(), task.getException().getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
数据库规则
我已将我的数据库规则设置如下:
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
}
当前 Firebase 数据库
这些是以任何用户身份登录时显示的维护案例。
不确定此处是否需要我的 MaintenanceActivity 代码,如果需要,需要哪些部分。
对此的任何帮助将不胜感激,已经坚持了这么久。
非常感谢。
【问题讨论】:
-
您共享的代码不是从 Firebase 数据库中读取的,因此很难说出您的规则和数据发生了什么。
-
@FrankvanPuffelen 你需要什么?我意识到用一行又一行的代码堵塞了这个问题。
-
老实说,我不清楚您的问题。但是从扫描来看,您似乎在读取或写入数据库时遇到了问题。如果这确实是问题所在,请编辑您的问题以包含产生问题的最小读/写代码。要尽量减少代码,但仍要完整,请查看creating an minimal, complete, verifiable example。
标签: java android firebase firebase-realtime-database firebase-authentication