2016-08-09 7 views
2

Ich verwende die Firebase-Authentifizierung in meiner App und registriere einen Benutzer mit E-Mail und Passwort. Ich möchte andere Benutzerdetails (getrennt vom angemeldeten Benutzer) erhalten, während ein Benutzer mit seinem eigenen Konto angemeldet ist. Wie kann ich diese Informationen erhalten?Firebase Wie bekomme ich die Benutzerdetails?

+0

Was meinst du mit "andere Benutzerdetails"? – Sistr

+0

Ich möchte andere Benutzer, die meine App verwenden, um genauer zu erhalten Ich möchte andere Benutzer Profilbild und Name mit ihrer UID oder E-Mail oder auf andere Weise ohne Speichern von Benutzerinformationen in Firebase-Datenbank –

+0

Es gibt keine Magie gibt es. Wenn sich der Benutzer mit einer benutzerdefinierten "E-Mail/Passwort" anmeldet, wissen Sie nichts anderes über diesen Benutzer (abgesehen von der eindeutigen Benutzer-ID). Wenn sich ein Nutzer mit Facebook anmeldet oder sich bei Google anmeldet, können Sie weitere Informationen wie die Profilbild-URL abrufen. Es wird hier erklärt: https://firebase.google.com/docs/auth/android/manage-users#get_a_users_profile. Wenn sich der Benutzer jedoch nur mit einer benutzerdefinierten E-Mail/einem Passwort anmeldet, gibt es keine Magie, diese Felder sind leer. – Sistr

Antwort

3

Werte wie E-Mail, Anzeigename und ID (spezifisch für das Authentifizierungssystem) sind unter Firebase User object verfügbar. Sie können einen Verweis auf den aktuell angemeldeten Benutzer von FIRAuth class abrufen. Ich habe Links und Klassennamen für iOS bereitgestellt, aber andere Plattformen sind ähnlich strukturiert.

Wenn Sie zusätzliche Daten für Benutzer speichern möchten, würde ich mit einem users Wurzelknoten empfehlen, die als Schlüssel uid aus der Firebase Benutzerobjekt unter Verwendung von für users geordneten Knoten.

+0

Derzeit speichere ich nur Benutzernamen und Profilbild URL, die von Firebase Authentifizierung unterstützt wird und ich bin auch in der Lage, aktuelle Benutzerprofil Bild und Name zu erhalten, aber ich möchte das gleiche Verhalten mit anderen angemeldeten Benutzer für meine App auch durch Verwendung seine E-Mail oder seine UID. –

+6

Wenn Sie Benutzern erlauben möchten, Informationen miteinander zu teilen, müssen Sie sie in der Datenbank speichern und selbst verwalten. Firebase bietet keinen Zugriff auf die Informationen anderer Benutzer. es wäre ein signifikantes Sicherheitsproblem. – cartant

-2

Es ist kein Sicherheitsproblem, sondern nur ein Mittel, wie Sie mit persönlichen Informationen umgehen. Sie können speichern, was Sie wollen in Firebase, so dass Sie einfach speichern können, wenn der Benutzer seine/ihre Avatar URL (aka facebook url) oder nur ID oder andere Informationen trotzdem anmelden, dann abrufen. Wenn du Infos von Usern abrufen musst, die deine Apps nicht neben benutzen, kannst du das natürlich auch einfach über die Facebook sdk mit User-Erlaubnis. mach's gut -

-1
//create user 
auth.createUserWithEmailAndPassword(email, password) 
    .addOnCompleteListener(SignupActivity.this, new OnCompleteListener <AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task <AuthResult> task) { 
      Toast.makeText(SignupActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show(); 
      progressBar.setVisibility(View.GONE); 
      // If sign in fails, display a message to the user. If sign in succeeds 
      // the auth state listener will be notified and logic to handle the 
      // signed in user can be handled in the listener. 
      if (!task.isSuccessful()) { 
       Toast.makeText(SignupActivity.this, "Authentication failed." + task.getException(), 
        Toast.LENGTH_SHORT).show(); 
      } else { 
       String user_id = auth.getCurrentUser().getUid(); 
       DatabaseReference current_user_db = _Database.child(user_id); 
       current_user_db.child("name").setValue(name); 
       current_user_db.child("image").setValue("default"); 
       startActivity(new Intent(SignupActivity.this, ProfileActivity.class)); 
       finish(); 
      } 
     } 
    }); 
} 
}); 
+0

Dies bietet keine Antwort auf die Frage. Sie können [ähnliche Fragen suchen] (https://stackoverflow.com/search) oder auf die verwandten und verknüpften Fragen auf der rechten Seite der Seite verweisen, um eine Antwort zu finden. Wenn Sie eine verwandte, aber andere Frage haben, [stellen Sie eine neue Frage] (https://stackoverflow.com/questions/ask), und fügen Sie einen Link zu diesem ein, um den Kontext zu verdeutlichen. Siehe: [Fragen stellen, Antworten erhalten, keine Ablenkungen] (https://stackoverflow.com/tour). – Dwhitz

+0

Schließlich, das nächste Mal [formatieren Sie Ihren Code richtig] (https://stackoverflow.com/editing-help), und fügen Sie einige Details zu Ihren Fragen/Antworten. – Dwhitz

Verwandte Themen