0

Hallo, habe eine Android App mit Facebook und Google Login. Ich benutze Firebase Auth und Realtime Datenbank und möchte prüfen, ob jemand in der Datenbank existiert. Wenn sich der User erstmalig bei Facebook oder Google anmeldet möchte ich einen neuen User in der Datenbank mit einem Nicknamen anlegen.Wie kann ich einen Firebase-Benutzer speichern, wenn er sich das erste Mal mit Facebook oder Google anmelden?

Hier ist mein Code:

public void saveUserToDatabase(User newuser){ 

     DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference("users"); 

     mDatabase.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 

       String userId = mAuth.getCurrentUser().getUid(); //Holt sich die ID von Firebase 

       /* 
       * Es wird geprüft ob das Element schon in der Database existiert 
       * */ 

       if(dataSnapshot.hasChild(userId)){ 

        Log.d(DATABSE_FIREBASE,"Benutzer ist bereits in der Datenbank angelegt!"); 

       }else{ 
         Log.d(DATABSE_FIREBASE,"Benutzer ist noch nicht in der Datenbank angelegt!"); 

        // hier muss der nickname übergeben werden 

        mDatabase.child(userId).setValue(newuser); 

         Log.d(DATABSE_FIREBASE,"Ein neuer Benutzer mit der Email: " + newuser.getEmail() + " wurde in der Datenbank angelegt"); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 
       Log.d(DATABSE_FIREBASE,"Fehler beim Zugriff auf die Datenbank..."); 
       finish(); 
      } 
     }); 

Aber der Benutzer nicht in der Datenbank speichern. Was kann ich tun?

+0

Sie müssen Spitzname für den ersten Benutzer in Firebase erstellen? –

+0

Stack Overflow ist als Remote-Debugger notorisch ineffizient. Um Hilfe zu bekommen, müssen Sie selbst mehr arbeiten und uns sagen, was vor sich geht. Hast du den Code in einem Debugger durchgegangen? Erreicht es 'onDataChange()'? Wenn ja, in welche Branchen geht es? –

Antwort

0

Verwenden Sie gemeinsame Einstellungen, um diese Informationen zu speichern. Diese Informationen bleiben erhalten, wenn die App noch installiert ist.

Context context = getActivity(); 
SharedPreferences sharedPref = context.getSharedPreferences(
getString(R.string.preference_file_key), Context.MODE_PRIVATE); 

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE) 


SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putString(getString(R.string.user_saved), "google|facebook"); 
editor.commit(); 
//Read from Shared Preferences 

SharedPreferences sharedPref =getActivity().getPreferences(Context.MODE_PRIVATE); 
String choice = sharedPref.getString(getString(R.string.user_saved), defaultValue); 
if(choice.isEmpty()) Log.d("TAG","first time"); 
+0

check-in onCreate nur, wenn der Schlüssel leer ist, wenn ja, dann ist es das erste Mal. – Remario

Verwandte Themen