0

嗨有一個Android應用程序與Facebook和谷歌登錄。我使用Firebase身份驗證和實時數據庫,並希望檢查數據庫中是否存在某人。如果用戶第一次登錄Facebook或Google,我想用暱稱在數據庫中創建一個新用戶。如果他第一次使用Facebook或Google登錄進行登錄,我可以如何保存Firebase用戶?

這裏是我的代碼:

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(); 
      } 
     }); 

但用戶不會在數據庫中保存。我能做什麼?

+0

您需要爲Firebase中的第一次用戶創建暱稱? –

+0

堆棧溢出作爲遠程調試器而臭名昭着,效率低下。所以爲了獲得幫助,你必須自己做更多的工作,並告訴我們發生了什麼。你是否在調試器中遍歷代碼?它是否達到'onDataChange()'?如果是這樣,它會進入哪些分支? –

回答

0

使用共享首選項來存儲該信息,如果應用程序仍然安裝,那麼該信息將持續存在。

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

只需檢查onCreate是否存儲的密鑰是​​空的,如果是的話那麼這是他們的第一次。 – Remario

相關問題