wake-up-neo.com

Fügen Sie mit firebase zusätzliche Benutzerinformationen hinzu

Ich habe die Firebase-Authentifizierung in meine App Android) integriert. Nehmen wir an, ein Benutzer hat eine E-Mail [email protected]. Ich möchte dem Benutzer einige zusätzliche Informationen wie den Namen des Benutzers, den Beruf und die Adresse hinzufügen. Wie kann ich die Benutzerauthentifizierungstabelle mit meiner Android App verbinden, um das zu tun?

Muss ich dafür APIs schreiben?

30
Jason Bourne

Erstellen Sie zunächst ein users -Verzeichnis in db. Speichern Sie dann unter Verwendung der eindeutigen ID des Benutzers, die Sie vom Authn-Prozess erhalten haben, die Benutzerinformationen unter users/{userid}.

Um dies zu erreichen, müssen Sie in die Details der Firebase-Datenbank einsteigen. Siehe hier: https://firebase.google.com/docs/database/Android/save-data

17

Sie müssen dazu keinen benutzerdefinierten Code schreiben. Firebase verfügt bereits über Funktionen, die Sie verwenden können.

Als Erstes müssen Sie sicherstellen, dass Benutzer nur auf die von ihnen gespeicherten Daten zugreifen können. Gehen Sie dazu zu Database/Rules und ändere deine Regeln so:

{
"rules": {
  "my_app_user": {
    "$uid": {
      ".write": "auth != null && auth.uid == $uid",
      ".read": "auth != null && auth.uid == $uid"
     }
   }
 }
}

Gehen Sie folgendermaßen vor, um die neuen Details in einer Firebase-Datenbank zu speichern:

        MyAppUser user = new MyAppUser();
        user.setAddressTwo("address_two");
        user.setPhoneOne("phone_one");
        ...

        mDatabaseReference.child("my_app_user").child(firebaseUser.getUid()).setValue(user).
                addOnCompleteListener(DetailsCaptureActivity.this,
                                   new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            ...

Der Name des Kindes my_app_user muss sowohl in Ihrem Code als auch in den Firebase-Regeln übereinstimmen, da es sonst nicht bestehen bleibt.

Wenn alles so läuft, wie es sein soll, sollten Sie die Details in Ihrer Datenbank sehen:

enter image description here

13

Sie müssen eine andere Datenbanktabelle mit "user" erstellen. Bei erfolgreicher Anmeldung müssen Sie sich zum ersten Mal anmelden, um eine neue Zeile in der Benutzertabelle zu erstellen.

public static void writeNewUser(DatabaseReference databaseReference, String userId, String name, String email, int accountType) {
    User user = new User(name, email, accountType);

    databaseReference.child("users").child(userId).setValue(user);
}

Sie können sich beziehen https://github.com/firebase/quickstart-Android/tree/61f8eb53020e38b1fdc5aaeddac2379b25240f3b/database

3