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)
mais mUserId est null. alors quand je regarde la base de données mUserid est null (comme une photo)
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();
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!
Pour obtenir l'UID de l'utilisateur actuel, il vous suffit de cette ligne de code:
String currentuser = FirebaseAuth.getInstance().getCurrentUser().getUid();
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 ();