child("Members").child("billgate@gmail.com").setValue(people);
这是我在设备上运行时崩溃的代码,我试图以儿童身份在我的Android Studio项目中插入一个Gmail帐户,但由于某些原因,它一直崩溃,但是当我将其更改为简单名称时它有效:
child("Members").child("billgate").setValue(people);
但是,如果我这样写而不包含@ gmail.com部分,它就可以完美运行。但是,我需要将Gmail帐户设置为我的孩子。
答案 0 :(得分:1)
因为Firebase不允许符号为。在密钥中,建议您像这样对电子邮件地址进行编码:
name@email.com-> name @ email,com
您可能会看到,而不是。我用过 ,。为此,可以使用以下方法:
static String encodeUserEmail(String userEmail) {
return userEmail.replace(".", ",");
}
static String decodeUserEmail(String userEmail) {
return userEmail.replace(",", ".");
}
答案 1 :(得分:0)
您不能在Firebase节点名称中使用特殊字符,而应使用用户ID代替电子邮件:
child("Members").child("userX").setValue(people);
,或者具有登录用户的唯一ID更好。
child("Members").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(people);