Java Firebase can';Don’不要将Gmail帐户作为孩子使用

Java Firebase can';Don’不要将Gmail帐户作为孩子使用,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,这是我的代码,当我在我的设备上运行它时,它崩溃了。我试图在我的Android Studio项目中作为一个孩子插入Gmail帐户,但由于某种原因它一直崩溃,但当我将它更改为一个简单的名称时,它工作了: child("Members").child("billgate@gmail.com").setValue(people); 但是,如果我这样写,而不包括@gmail.com部分,它的工作就完美了。但是,我需要将Gmail帐户设置为我的孩子。您不能在firebase节点名称中使用特殊字符,而是将用

这是我的代码,当我在我的设备上运行它时,它崩溃了。我试图在我的Android Studio项目中作为一个孩子插入Gmail帐户,但由于某种原因它一直崩溃,但当我将它更改为一个简单的名称时,它工作了:

child("Members").child("billgate@gmail.com").setValue(people);

但是,如果我这样写,而不包括@gmail.com部分,它的工作就完美了。但是,我需要将Gmail帐户设置为我的孩子。

您不能在firebase节点名称中使用特殊字符,而是将用户ID而不是电子邮件:

child("Members").child("billgate").setValue(people);
或者最好使用登录用户的唯一ID

child("Members").child("userX").setValue(people);

因为Firebase不允许将符号用作。在密钥中,我建议您对电子邮件地址进行如下编码:

name@email.com -> name@email,com

正如你可能看到的,而不是。我用过,。要实现这一点,可以使用以下方法:

child("Members").child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(people);

检查我的答案,希望能对你有所帮助。谢谢加斯顿,它很有魅力
static String encodeUserEmail(String userEmail) {
    return userEmail.replace(".", ",");
}

static String decodeUserEmail(String userEmail) {
    return userEmail.replace(",", ".");
}