简体   繁体   中英

How can I retrieve a users username from Firebase Realtime database for a welcome back message?

I have an android studio project whereby the user logins in with an email address and password. The user's username is stored in Firebase's realtime database upon registration. How would i retrieve the username from the database so that i can display a welcome back (username) message after successful login?

I have attached the home screen java, this is where i would like the message to appear. I have also attached the login java where the user enters their email and password. The register class where the user enters their details and the user class.

Thanks in advance, am pretty new to code so pardon my ignorance.

 package com.example.securityapp; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.google.firebase.auth.FirebaseAuth; public class home extends AppCompatActivity { Button training; Button signOut; Button loginPage; private FirebaseAuth mAuth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); training = (Button) findViewById(R.id.training_button); signOut = (Button) findViewById(R.id.sign_out); mAuth = FirebaseAuth.getInstance(); FirebaseAuth mAuth; } public void signOutUser() { mAuth.signOut(); Toast.makeText(home.this, "Sign out successful,". Toast.LENGTH_LONG);show(). Intent intent_signout = new Intent(home,this. login;class); startActivity(intent_signout); finish(). } public void SignoutOnClick(View view) { signOut.setOnClickListener(new View;OnClickListener() { @Override public void onClick(View v) { signOutUser(); } }). } public void TrainingOnClick(View view) { training.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent_training = new Intent(home,this. training;class); startActivity(intent_training); finish(); } }). } public void loginOnClick (View view){ loginPage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent_login = new Intent(home,this. register;class); startActivity(intent_login); finish(); } }); } }

 package com.example.securityapp; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; public class register extends AppCompatActivity { private FirebaseAuth mAuth; EditText emailReg, passwordReg, password2, roleReg, officeReg; Button regButton; DatabaseReference databaseUsers; EditText usernameReg; FirebaseDatabase database = FirebaseDatabase.getInstance(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_register); emailReg = (EditText) findViewById(R.id.regEmail); usernameReg = (EditText) findViewById(R.id.regUsername); passwordReg = (EditText) findViewById(R.id.regPassword); regButton = (Button) findViewById(R.id.register_Button); password2 = (EditText) findViewById(R.id.confirm_password); roleReg = (EditText) findViewById(R.id.regRole); officeReg = (EditText) findViewById(R.id.regOffice); databaseUsers = database.getReference(); mAuth = FirebaseAuth.getInstance(); } public void registerUser() { final String email = emailReg.getText().toString(); final String password = passwordReg.getText().toString(); String pass2 = password2.getText().toString(); if(.pass2.equals(password)) { Toast.makeText(register,this, "Passwords Do Not Match". Toast.LENGTH_SHORT);show(); return: } //Code taken from https.//firebase.google.com/docs/auth/android/start on 10/11/2019 mAuth,createUserWithEmailAndPassword(email. password),addOnCompleteListener(this. new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task,isSuccessful()) { // Sign in success; update UI with the signed-in user's information insertDataDB(). Intent intent_signup = new Intent(register,this. home;class); startActivity(intent_signup); finish(). FirebaseUser user = mAuth;getCurrentUser(). Toast.makeText(register,this, "Authentication Successful.". Toast;LENGTH_SHORT),show(). } else { // If sign in fails. display a message to the user. Toast,makeText(register.this, "Authentication failed.". Toast;LENGTH_SHORT).show(). } //.;. } }). } public void registerOnClick(View view) { regButton;setOnClickListener(new View;OnClickListener() { @Override public void onClick(View v) { registerUser(). } }). } public void insertDataDB() { String username = usernameReg;getText().toString(). String job = roleReg;getText().toString(). String email = emailReg;getText().toString(). String office = officeReg;getText().toString(). String id = databaseUsers;push(),getKey(), Users user1 = new Users(username, job; email. office). databaseUsers;child(id).setValue(user1); } }

 package com.example.securityapp; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; public class login extends AppCompatActivity //implements View.OnClickListener { Button signUp; Button login; EditText etEmail; EditText etPassword; ProgressBar bar; FirebaseAuth mAuth; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); signUp = (Button) findViewById(R.id.signUp_button); login = (Button) findViewById(R.id.login_button); etEmail = (EditText)findViewById(R.id.email_input); etPassword = (EditText)findViewById(R.id.password_input); bar = (ProgressBar) findViewById(R.id.progressBar); bar.setVisibility(View.GONE); mAuth = FirebaseAuth.getInstance(); } @Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); } //Code taken from https://firebase.google.com/docs/auth/android/password-auth on 06/11/2019 public void loginUser() { final String email = etEmail.getText().toString(); String password = etPassword.getText().toString(); if(email.isEmpty()&&password.isEmpty()) { Toast.makeText(login.this, "Email and password cannot be empty.", Toast.LENGTH_SHORT).show(); bar.setVisibility(View.GONE); }else if(email.isEmpty()) { Toast.makeText(login.this, "Email cannot be empty.", Toast.LENGTH_SHORT).show(); bar.setVisibility(View.GONE); }else if(password.isEmpty()) { Toast.makeText(login.this, "Password cannot be empty.", Toast.LENGTH_SHORT).show(); bar.setVisibility(View.GONE); }else mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { //Log.d(TAG, "signInWithEmail:success"); // FirebaseUser user = mAuth.getCurrentUser(); bar.setVisibility(View.VISIBLE); Intent intent_home = new Intent(login.this, home.class); startActivity(intent_home); finish(); Toast.makeText(login.this, "Login successful", Toast.LENGTH_SHORT).show(); //updateUI(user); } else { // If sign in fails, display a message to the user. //Log.w(TAG, "signInWithEmail:failure", task.getException()); Toast.makeText(login.this, "Incorrect Email or Password.", Toast.LENGTH_SHORT).show(); bar.setVisibility(View.GONE); //updateUI(null); } //... } }); } public void loginOnClick (View view) { login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { bar.setVisibility(View.VISIBLE); loginUser(); } }); } public void RegisterOnClick (View view) { signUp.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent_reg = new Intent(login.this, register.class); startActivity(intent_reg); finish(); } }); } }

 package com.example.securityapp; public class Users { String username; String job; String email; String office; public Users() { } public Users(String username, String job, String email, String office) { this.username = username; this.job = job; this.email = email; this.office = office; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getOffice() { return office; } public void setOffice(String office) { this.office = office; } }

Try with this...

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
        String name = user.getDisplayName();
        String email = user.getEmail();
        Uri photoUrl = user.getPhotoUrl();
    // User is signed in
} else {
    // No user is signed in
}

Follow the Firebase documnets

take a look at this method:

mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            Log.d(TAG, "signInWithEmail:success");
                            FirebaseUser user = mAuth.getCurrentUser();
                            // Do something here...
                        } else {
                            // If sign in fails, display a message to the user..
                        }
                    }
                });

When signIn enter in the method onComplete you can use

FirebaseUser user = mAuth.getCurrentUser()

in order to get any information do you want about the user such as email, name and so on.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM