簡體   English   中英

如何從 Firebase 實時數據庫中檢索用戶用戶名以獲取歡迎回復消息?

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

我有一個 android studio 項目,用戶可以使用電子郵件地址和密碼登錄。 用戶的用戶名在注冊時存儲在 Firebase 的實時數據庫中。 我如何從數據庫中檢索用戶名,以便在成功登錄后顯示歡迎回來(用戶名)消息?

我附上了主屏幕 java,這是我希望消息出現的地方。 我還附上了用戶輸入電子郵件和密碼的登錄 java。 用戶輸入其詳細信息和用戶類別的注冊類別。

在此先感謝,我對代碼還很陌生,所以請原諒我的無知。

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

試試這個...

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
}

關注 Firebase文檔網

看看這個方法:

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

當登錄進入 onComplete 方法時,您可以使用

FirebaseUser 用戶 = mAuth.getCurrentUser()

為了獲得您想要的有關用戶的任何信息,例如電子郵件、姓名等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM