Я хочу загрузить некоторую информацию о пользователях через библиотеки Firebase в Android Studio.У меня проблема в том, что я не уверен, как склеить функции, чтобы они работали.
Пока у меня есть функция проверки электронной почты, а также функция загрузки пользовательских данных, но когда я нажимаю кнопку регистрации, подтверждение по электронной почте отправлено, и оно работает (пользователь зарегистрирован, но пользовательские данные не загружены в базу данных firebase.
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Button;
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 RegisterActivity extends AppCompatActivity {
private EditText userName, userPassword, userEmail, phoneNumber;
private Button logButton, regButton;
private FirebaseAuth firebaseAuth;
String email, name, phone, password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
setupUIViews();
firebaseAuth = FirebaseAuth.getInstance();
regButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(validate()){
//upload everithing to the database
String user_name = userName.getText().toString().trim();
String user_email = userEmail.getText().toString().trim();
String user_password = userPassword.getText().toString().trim();
String user_phone = phoneNumber.getText().toString().trim();
firebaseAuth.createUserWithEmailAndPassword(userEmail.getText().toString().trim(), userPassword.getText().toString().trim()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
sendEmailVerification();
}
else{
Toast.makeText(RegisterActivity.this, "Registration failed", Toast.LENGTH_SHORT).show();
}
}
});
}
}
});
logButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(RegisterActivity.this, MainActivity.class));
}
});
}
private void setupUIViews(){
userName = (EditText)findViewById(R.id.etUser2);
userPassword = (EditText)findViewById(R.id.etPas2);
userEmail = (EditText)findViewById(R.id.etEmail2);
phoneNumber = (EditText)findViewById(R.id.etPhone1);
regButton = (Button)findViewById(R.id.registerButton2);
logButton = (Button)findViewById(R.id.loginButton2);
}
private Boolean validate(){
Boolean result = false;
name = userName.getText().toString().trim();
email = userEmail.getText().toString().trim();
phone = phoneNumber.getText().toString().trim();
password = userPassword.getText().toString().trim();
if(name.isEmpty() || password.isEmpty() || email.isEmpty()){
Toast.makeText(this, "Please enter all the details", Toast.LENGTH_SHORT).show();
}
else{
result = true;
}
return result;
}
private void sendEmailVerification(){
final FirebaseUser firebaseUser = firebaseAuth.getInstance().getCurrentUser();
if(firebaseUser != null){
firebaseUser.sendEmailVerification().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
sendUserData();
Toast.makeText(RegisterActivity.this, "Sucessfully registered", Toast.LENGTH_SHORT).show();
firebaseAuth.signOut();
finish();
startActivity(new Intent(RegisterActivity.this, MainActivity.class));
}
else{
Toast.makeText(RegisterActivity.this, "Verification email was not sent", Toast.LENGTH_SHORT).show();
}
}
});
}
}
private void sendUserData(){
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference myRef = firebaseDatabase.getReference(firebaseAuth.getUid());
UserProfile userProfile = new UserProfile(name, email, phone);
myRef.child(firebaseAuth.getUid()).setValue(userProfile);
}
}
, а также класс UserProfile:
package com.example.myapplication;
public class UserProfile {
public String userName;
public String userEmail;
public String userPhone;
public UserProfile(String userName, String userEmail, String userPhone) {
this.userName = userName;
this.userEmail = userEmail;
this.userPhone = userPhone;
}
}
Итак, в заключение я хочу добавить данные пользователя в базу данных, а также проверить электронную почту. Заранее спасибо!