web-dev-qa-db-fra.com

Comment obtenir l'utilisateur uid depuis firebase sous android?

Je veux enregistrer des données sur firebase. Ceci est mon code d'activité:

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

et ceci est pour mon code de bouton:

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

mon code source (pour l'aide/par exemple): https://www.sitepoint.com/creating-a-cloud-backend-for-your-Android-app-us-firebase/

Lorsque j'enregistre des données sur firebase sous la photo suivante (Login & Auth)  enter image description here

mais mUserId est null. alors quand je regarde la base de données mUserid est null (comme une photo)  enter image description here

8
eagle

Vous pouvez utiliser ces lignes de code pour obtenir l'UID de l'utilisateur actuel avec Android Firebase Framework

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

le problème est que dans Firebase, lorsque vous créez un utilisateur, il ne se connecte pas à l'utilisateur. Voici des docs:

Crée un nouvel utilisateur email/mot de passe avec les informations d'identification fournies. Cette méthode n'authentifie pas l'utilisateur. Une fois le compte créé, l'utilisateur peut être authentifié avec authWithPassword () . 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
        }
    });

Donc, une fois que votre utilisateur est créé, appelez la fonction authWithPassword. J'espère que ça aide!

2
acrisfh

Pour obtenir l'UID de l'utilisateur actuel, il vous suffit de cette ligne de code:

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

J'avais également le même problème pour obtenir l'ID . Lorsque je l'ai imprimé sur le journal (Log.i), je pouvais voir l'ID, mais lorsque j'essayais de l'utiliser comme l'un des champs les objets étant créés, le champ n'est pas créé.

Je faisais quelque chose: String currentUId = FirebaseAuth.getInstance (). GetCurrentUser (). GetUid ();

Cela n'a pas bien fonctionné pour moi.

SOLUTION I FOUND OUT - (a travaillé pour moi - essayez-le)

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

0
Arthur Imona