Ich erstelle eine App auf Appinventor mit Firebase und es wird ein Fehler zurückgegeben, wenn ich eine E-Mail an die Firebase einführe. Wie kann ich das Problem beheben?

Invalid Firebase path: Firebase paths must not contain '.', '#', '$', '[', or ']'

0
adriangc24 18 Apr. 2018 im 19:43

5 Antworten

Beste Antwort

Dies ist ein Beispiel für das Speichern in der Firebase, wenn ein Wert . # $ [ ] enthält.

image

1
Samuel Liew 21 Apr. 2018 im 07:59

Die Verwendung der E-Mail-Adresse als Schlüssel in der Firebase-Echtzeitdatenbank ist keine sehr gute Idee. E-Mail-Adressen sind problematisch, da sie nicht zwischen Groß- und Kleinschreibung unterscheiden. Benutzer können sie im Laufe der Zeit ändern. Wie Sie sehen, enthalten sie ungültige Zeichen.

Stattdessen sollten Sie eine andere Kennung verwenden, z. B. eine automatische Push-ID oder eine andere eindeutige ID. Sie können die E-Mail-Adresse als untergeordneten Wert in dem Bereich speichern, den Sie für jeden Benutzer erstellen, und Sie können Benutzer abfragen, um später nach einer bestimmten E-Mail-Adresse zu suchen, wenn Sie möchten.

Wenn Sie wirklich eine E-Mail-Adresse als untergeordneten Schlüssel verwenden müssen, müssen Sie die Zeichenfolge auf irgendeine Weise codieren, um die ungültigen Zeichen zu entfernen, und immer daran denken, E-Mail-Adresszeichenfolgen auf dieselbe Weise zu codieren, wenn Sie nach dem Benutzer anhand dieser E-Mail suchen .

1
Doug Stevenson 18 Apr. 2018 im 17:54

Einfach, bevor Sie die E-Mail-Adresse verwenden, ersetzen Sie alle '.' mit '1'.

Daher sieht diese E-Mail "example@email.com" wie "example @ email1com" aus.

Dies kann auch durchgeführt werden, um andere Zeichen zu ersetzen, die illegal sind.

0
Steven 2 Jän. 2020 im 12:46

Das scheint zu funktionieren

Utils.EncodeString(user.email)

Prost

0
amitos80 27 Apr. 2020 im 15:04

Sie erhalten diese Ausnahme, weil E-Mails ungültige Zeichen wie "." Enthalten. und '@', die für die Firebase-Datenbank ungültig sind. Verwenden Sie stattdessen die Benutzer-ID. Verwenden Sie einfach FirebaseAuth.getInstance().getCurrentUser().getUid(). Hoffentlich sollte das Problem verschwinden.

0
Kathurima 30 Apr. 2020 im 13:53