我正在为暑期学校的聊天应用程序工作。这是我的第一个Android应用程序,我们被告知要使用Firebase。虽然在Firebase中使用内置登录非常简单,但我读到你无法访问注册用户列表,所以我试图解决问题。我又做了一张桌子。 在用户登录后,我在表格中搜索他的电子邮件,如果不在那里,他的电子邮件(用作昵称)将被添加到表格中。然后,我想使用表的内容,与其他注册用户创建聊天。但是,由于某些原因,我的应用程序没有将User对象推送到Firebase,因为我在控制台中检查了它。它就在那里。捕获量在哪里?代码总是进入if。
的内部部件的代码,我将其发送到Firebase。
/*
* Get current error_reporting value,
* so that we don't lose preferences set in php.ini and .htaccess
* and accidently reenable message types disabled in those.
*
* If you want to disable e.g. E_STRICT on a global level,
* use php.ini (or .htaccess for folder-level)
*/
$old_error_reporting = error_reporting();
/*
* Disable E_STRICT on top of current error_reporting.
*
* Note: do NOT use ^ for disabling error message types,
* as ^ will re-ENABLE the message type if it happens to be disabled already!
*/
error_reporting($old_error_reporting & ~E_STRICT);
// code that should not emit E_STRICT messages goes here
/*
* Optional, depending on if/what code comes after.
* Restore old settings.
*/
error_reporting($old_error_reporting);
我的用户类:
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SIGN_IN_REQUEST_CODE) {
if (resultCode == RESULT_OK) {
Toast.makeText(this,
"Successfully signed in. Welcome!",
Toast.LENGTH_LONG)
.show();
displayChatMessages();
setUserInfo();
FirebaseDatabase.getInstance().getReference("server/users").equalTo(FirebaseAuth.getInstance().getCurrentUser().getEmail().toString()).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("Am i inside?" + dataSnapshot.hasChildren());
if (!dataSnapshot.hasChildren()) {
User user = new User(FirebaseAuth.getInstance().getCurrentUser().getEmail());
FirebaseDatabase.getInstance().getReference("server/users").push().setValue(user);
System.out.println("I am at the end. " + FirebaseAuth.getInstance().getCurrentUser().getDisplayName() + " " + FirebaseDatabase.getInstance().getReference("server/users").toString());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("ERROR: " + databaseError.toString());
}
}
);
} else {
Toast.makeText(this,
"We couldn't sign you in. Please try again later.",
Toast.LENGTH_LONG)
.show();
// Close the app
finish();
}
}
}
使用此代码,我想让用户从firebase返回:
public class User {
private String nickName;
public User(){}
public User(String nickName){
}
public String getNickName(){
return nickName;
}
public void setNickName(String nickName){
this.nickName=nickName;
}
}
谢谢:)
答案 0 :(得分:0)
您可以尝试在数据库中显式创建“用户”节点,然后进行存储 该节点的所有新用户。 。FirebaseDatabase.getInstance()getReference()子( “用户”)haschild(电子邮件)。; 检查用户节点是否有此电子邮件,如果不是... FirebaseDatabase.getInstance()。getReference()。child(“Users”)。child(email).setValue(new user()); 您可以根据需要收听“用户”节点。