12

Ich habe Firebase Auth mit meiner Android App integriert. Nehmen wir an, ein Benutzer hat eine Mail [email protected]. Ich möchte dem Benutzer zusätzliche Informationen wie den Namen des Benutzers, Beruf und Adresse hinzufügen. Wie kann ich die User Auth-Tabelle mit meiner Android-App verbinden, um das zu tun?Fügen Sie zusätzliche Benutzerinformationen mit Firebase hinzu

Muss ich irgendwelche APIs dafür schreiben?

+0

Sie Benutzerinformationen in einer Tabelle wie echte Datenbank speichern wollen oder möchte persönliche Informationen von Post erhalten id –

+1

Ja, ich möchte sie wie eine echte Datenbank. Kann ein Nosql JSON genug sein oder Tisch wird gut sein, um weiterzumachen. Jetzt rufe ich auth.createUserWithEmailAndPassword auf, um den Benutzer zu erstellen, und ich finde sie in meiner Konsole. –

+0

Haben Sie Real-Time-Datenbank in firebase –

Antwort

7

Erstellen Sie zunächst ein Verzeichnis users in db. Verwenden Sie dann die eindeutige ID des Benutzers, die Sie von authn process erhalten, und speichern Sie 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

+0

Gibt es eine Möglichkeit zu erstellen benutzerdefinierte UID wie ich Benutzer mit E-Mail-Adresse und Passwort erstellen möchten, aber UID als 1 –

+0

@MasterYoda gibt es einen Grund, warum Firebase-Datenbank nicht inkrement als ihre eindeutige ID verwenden. Stattdessen bieten sie ihre eigene eindeutige Kennung –

+0

@teckwei, Es gibt ein Knotenmodul mit dem Namen 'firebase-admin', mit dem es möglich ist. Vielen Dank. Ich habe es vor ein paar Tagen bekommen. –

2

Sie müssen eine andere Datenbanktabelle erstellen, sagen Sie "Benutzer". Bei erfolgreicher Anmeldung müssen Sie zum ersten Mal eine neue Zeile in der Benutzertabelle anlegen.

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 beziehen https://github.com/firebase/quickstart-android/tree/61f8eb53020e38b1fdc5aaeddac2379b25240f3b/database

5

Sie brauchen keine benutzerdefinierten Code zu schreiben, dies zu tun. Firebase verfügt bereits über Funktionen, die Sie verwenden können.

Als Erstes müssen Sie sicherstellen, dass Benutzer nur auf die Daten zugreifen können, die sie speichern. Um dies zu tun, gehen Sie zu Database/Rules und Ihre Regeln dies ändern:

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

Dann die neuen Details in einer Firebase Datenbank zu speichern, dies tun:

 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 stimmen Sie sowohl in Ihrem Code als auch in den Firebase-Regeln überein, andernfalls wird es nicht beibehalten.

Wenn alles geht, wie sollte, sollten Sie die Details in Ihrer Datenbank sehen:

enter image description here

Verwandte Themen