3

Ich möchte Daten in Firebase speichern. Aber ich tat es nicht. Das ist also meine Tätigkeit Code:Wie Benutzer UID von Firebase auf Android bekommen?

private Firebase firebaseRef; 
Firebase.setAndroidContext(this); 

try { 
    mUserId = firebaseRef.getAuth().getUid(); 
} catch (Exception e) { 
    // loginWithMailView(); 
} 
itemsUrl = Constants.FIREBASE_URL + "/Person/" + mUserId +"/Information/"; 

//Person + null (?) + the other information 

und das ist für meine Button-Code:

buttonSave = (Button) findViewById(R.id.btnKaydolKayit); 
buttonSave.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     firebaseRef = new Firebase(Constants.FIREBASE_URL); 
     String name = editTextName.getText().toString().trim(); 
     String surname = editTextSurname.getText().toString().trim(); 
     String gender = final_result.getText().toString(); 
     String mail = editTextMail.getText().toString(); 
     String pass = editTextPass.getText().toString().trim(); 
     String phone = editTextPhone.getText().toString().trim(); 
     String trom = final_resultT.getText().toString(); 
     String bloodGroup = spinnerBlood.getSelectedItem().toString(); 
     String dateBlood = dateTextViewBlood.getText().toString(); 
     String dateTrombo = dateTextViewTrom.getText().toString(); 

     if (pass.isEmpty() || mail.isEmpty()) { 
      AlertDialog.Builder builder = new AlertDialog.Builder(KaydolActivity.this); 
      builder.setMessage(R.string.signup_error_message) 
        .setTitle(R.string.signup_error_title) 
        .setPositiveButton(android.R.string.ok, null); 
      AlertDialog dialog = builder.create(); 
      dialog.show(); 
     } else { 
      firebaseRef.createUser(mail, pass, new Firebase.ResultHandler(){ 

       @Override 
       public void onSuccess() { 
        firebaseRef = new Firebase(Constants.FIREBASE_URL); 
        // firebaseRef.setValue(); 
        AlertDialog.Builder builder = new AlertDialog.Builder(KaydolActivity.this); 
        builder.setMessage("Hesap başarılı bir şekilde oluşturuldu!").setPositiveButton(R.string.login_button_label, new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialogInterface, int i) { 
          Intent intent = new Intent(KaydolActivity.this, loginWithMail.class); 
          intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
          intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
          startActivity(intent); 
         } 
        }); 
        AlertDialog dialog = builder.create(); 
        dialog.show(); 
       } 

       @Override 
       public void onError(FirebaseError firebaseError) { 
        AlertDialog.Builder builder = new AlertDialog.Builder(KaydolActivity.this); 
        builder.setMessage(firebaseError.getMessage()) 
          .setTitle(R.string.signup_error_title) 
          .setPositiveButton(android.R.string.ok, null); 
        AlertDialog dialog = builder.create(); 
        dialog.show(); 
       } 
      }); 
     } 

     new Firebase(itemsUrl).push().child("name").setValue(name); 
     new Firebase(itemsUrl).push().child("surname").setValue(surname); 
     new Firebase(itemsUrl).push().child("gender").setValue(gender); 
     new Firebase(itemsUrl).push().child("mail").setValue(mail); 
     new Firebase(itemsUrl).push().child("pass").setValue(pass); 
     new Firebase(itemsUrl).push().child("phone").setValue(phone); 
     new Firebase(itemsUrl).push().child("trom").setValue(trom); 
     new Firebase(itemsUrl).push().child("bloodGroup").setValue(bloodGroup); 
     new Firebase(itemsUrl).push().child("trom").setValue(trom); 
     new Firebase(itemsUrl).push().child("dateBlood").setValue(dateBlood); 
     new Firebase(itemsUrl).push().child("dateTrombo").setValue(dateTrombo); 
    } 
}); 

mein Quellcode (um Hilfe/zum Beispiel): https://www.sitepoint.com/creating-a-cloud-backend-for-your-android-app-using-firebase/

Als ich sparen Daten zum firebase wie das folgende Foto (Anmeldung & Auth) enter image description here

, aber mUserId ist null. Wenn ich Datenbank schaue mUserid ist null (wie ein Foto) enter image description here

+0

Firebase ging durch eine große API-Änderung in letzter Zeit. Daher ist es am besten, Ihre Firebase-API zu aktualisieren. In diesem Leitfaden finden Sie weitere Informationen: https://firebase.google.com/support/guides/firebase-android –

+0

Können Sie Ihre 'mUserId' im ersten' try'-Block 'anmelden' und sehen, ob ein Wert vorhanden ist oder nicht? –

+0

Wenn der 'user' nicht eingeloggt' Firebase' ist, wird eine 'null'' userid' –

Antwort

2

das Problem ist, dass in Firebase, wenn Sie einen Benutzer erstellen, es nicht in den Benutzer anmeldet. Hier ist aus der Dokumentation:

Erstellt ein neues E-Mail/Kennwort Benutzer mit den angegebenen Anmeldeinformationen. Diese Methode authentifiziert den Benutzer nicht. Nachdem das Konto erstellt wurde, kann der Benutzer mit authWithPassword() authentifiziert werden. https://www.firebase.com/docs/web/api/firebase/createuser.html

Firebase ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com"); 
    ref.authWithPassword(mail, pass, new Firebase.AuthResultHandler() { 
     @Override 
     public void onAuthenticated(AuthData authData) { 
      System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider()); 
     } 
     @Override 
     public void onAuthenticationError(FirebaseError firebaseError) { 
      // there was an error 
     } 
    }); 

Also, wenn Ihre Benutzer aufrufen Funktion die authWithPassword erstellt wird. Ich hoffe es hilft!

+0

Verwenden Sie authObject.signInWithEmailAndPassword (E-MAIL PASSWORT); – Farasy

10

Sie diese Zeilen Code verwenden können Current User Uid mit Android Firebase Rahmen

FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser() ; 
Toast.makeText(this, "" + currentFirebaseUser.getUid(), Toast.LENGTH_SHORT).show(); 
0

Um Current User UID zu erhalten, müssen Sie nur diese Codezeile:

String currentuser = FirebaseAuth.getInstance().getUid();