如何从android上的firebase获取用户uid?

如何从android上的firebase获取用户uid?,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我想将数据保存到firebase。这是我的活动代码: private Firebase firebaseRef; Firebase.setAndroidContext(this); try { mUserId = firebaseRef.getAuth().getUid(); } catch (Exception e) { // loginWithMailView(); } itemsUrl = Constants.FIREBASE_URL + "/Person/" + mU

我想将数据保存到firebase。这是我的活动代码:

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
这是我的按钮代码:

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);
    }
});
我的源代码(用于帮助/例如):

当我将数据保存到firebase时,如下图所示(登录和验证)

但是mUserId是空的。所以当我看到数据库mUserid为null时(就像照片一样)

问题在于,在firebase中,当您创建用户时,它不会登录该用户。以下是文档中的内容:

使用提供的凭据创建新的电子邮件/密码用户。此方法不会对用户进行身份验证。创建帐户后,可以使用authWithPassword()对用户进行身份验证。

Firebase ref=新的Firebase(“https://.firebaseio.com");
ref.authWithPassword(邮件、通行证、新Firebase.AuthResultHandler(){
@凌驾
已验证的公用void(AuthData AuthData){
System.out.println(“用户ID:+authData.getUid()+”,提供程序:+authData.getProvider());
}
@凌驾
AuthenticationError上的公共无效(FirebaseError FirebaseError){
//有一个错误
}
});

因此,创建用户后,请调用authWithPassword函数。希望有帮助

您可以使用这些代码行通过Android Firebase Framework获取当前用户Uid

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

要获取当前用户UID,您只需要以下代码行:

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

我在获取uid时也遇到了同样的问题。 当我把它打印在日志(log.i)上时,我可以看到uid,但是当我试图将它用作正在创建的一个对象中的一个字段时,该字段不会被创建

我正在做的事情是:字符串currentUId=FirebaseAuth.getInstance().getCurrentUser().getUid()

这对我来说不太管用

我找到的解决方案-(对我有用-尝试一下)

用法:FirebaseUser currentU=FirebaseAuth.getInstance().getCurrentUser();
字符串uId=currentU.getUid()

在REACT NATIVE中就是这样

  import firebase as 'firebase';

    HandleGetUserId=()=>{
    let userId = firebase.auth().currentUser.uid;
    return userId;
    }
只需调用函数HandleGetUserId即可获得如下id

this.HandleGetUserId();

在您的代码中,您的firebaseRef似乎为null,因此会导致null
uid
,建议从Firebase获取用户id的方法是在用户登录后在应用程序中的任何位置执行以下操作

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

Firebase最近经历了一次重大的API更改。因此,最好升级Firebase API。请参阅本指南以获取帮助:能否在初始
块中
Log
您的
mUserId
尝试
并查看是否有任何值?如果
用户
未登录
Firebase
将返回一个
null
用户ID
,但我可以添加一个用户。我只是想得到用户ID。那么我如何更改此代码:
mUserId=firebaseRef.getAuth().getUid()
(新的google.firebase)@talhamiry您必须登录用户才能使用
firebaseRef.getAuth().getUid()
。否则,如果不完全下载node Person并在iTunes authObject中循环,就无法知道特定用户的UID;您试图解释的两种方法没有区别。这是返回空值
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();