wake-up-neo.com

Wie bekomme ich eine Benutzer-ID von Android auf Android?

Ich möchte Daten in der Firebase speichern. Dies ist mein Aktivitätscode:

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 meinen Knopfcode:

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 (für Hilfe/zum Beispiel): https://www.sitepoint.com/creating-a-cloud-backend-for-your-Android-app-using-firebase/

Wenn ich Daten als folgendes Foto in Firebase speichere (Login & Auth)  enter image description here

mUserId ist jedoch null. Wenn ich die Datenbank anschaue, ist mUserid null (wie ein Foto)  enter image description here

8
eagle

Sie können diese Codezeilen verwenden, um Current User Uid mit Android Firebase Framework zu erhalten

FirebaseUser currentFirebaseUser = FirebaseAuth.getInstance().getCurrentUser() ;
Toast.makeText(this, "" + currentFirebaseUser.getUid(), Toast.LENGTH_SHORT).show();
18
Mr. Suryaa Jha

das Problem ist, dass Sie sich in Firebase beim Erstellen eines Benutzers nicht beim Benutzer anmelden. Hier ist von den Dokumenten:

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

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

Sobald Ihr Benutzer erstellt wurde, rufen Sie die Funktion authWithPassword auf. Ich hoffe es hilft!

2
acrisfh

Um die aktuelle Benutzer-UID zu erhalten, benötigen Sie nur diese Codezeile:

String currentuser = FirebaseAuth.getInstance().getCurrentUser().getUid();
1
Siddy Hacks

in REACT NATIVE ist es einfach so.

  import firebase as 'firebase';

    HandleGetUserId=()=>{
    let userId = firebase.auth().currentUser.uid;
    return userId;
    }

rufen Sie einfach die Funktion HandleGetUserId auf, um die ID wie folgt zu ermitteln

this.HandleGetUserId();
0
Heartless Vayne

Ich hatte auch das gleiche Problem mit dem Abrufen der UID ... Wenn ich es auf dem Protokoll (Log.i) gedruckt hatte, konnte ich die UID sehen, jedoch als ich versuchte, es als eines der Felder in einem meiner zu verwenden Objekte werden erstellt, das Feld wird nicht erstellt.

Ich habe etwas getan: String currentUId = FirebaseAuth.getInstance (). GetCurrentUser (). GetUid ();

Das funktionierte nicht gut für mich.

LÖSUNG Ich habe herausgefunden - (für mich gearbeitet - probieren Sie es aus)

Verwenden Sie: FirebaseUser currentU = FirebaseAuth.getInstance (). GetCurrentUser (); String uId = currentU.getUid ();

0
Arthur Imona