我正在编写使用Firebase注册的代码。
帐户创建,但始终执行文件的其他部分。请帮助我
我也可以交叉检查每一条线,甚至还要调试。但是我无法解决问题。
package com.e.freshfuits;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.e.freshfuits.model.User;
import com.google.android.material.textfield.TextInputEditText;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.rengwuxian.materialedittext.MaterialEditText;
import java.net.UnknownServiceException;
public class SignUp extends AppCompatActivity {
private TextInputEditText editname,editpassword,editphone;
private Button btnsignup;
final FirebaseDatabase
firebaseDatabase=FirebaseDatabase.getInstance();
final DatabaseReference
table_user=firebaseDatabase.getReference("User");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
editphone=(TextInputEditText) findViewById(R.id.editphone);
editname=(TextInputEditText) findViewById(R.id.editname);
editpassword=(TextInputEditText) findViewById(R.id.editPassword);
btnsignup=(Button)findViewById(R.id.signupbutton);
}
public void mymethod(View view) {
final ProgressDialog mDialog=new ProgressDialog(SignUp.this);
mDialog.setMessage("Please wait ! ");
mDialog.show();
table_user.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.child(editphone.getText().toString()).exists()) {
mDialog.dismiss();
Toast.makeText(SignUp.this,"Already Registered ",Toast.LENGTH_SHORT).show();
} else {
mDialog.dismiss();
User user=new User(editname.getText().toString(),editpassword.getText().toString());
table_user.child(editphone.getText().toString()).setValue(user);
Toast.makeText(SignUp.this,"Account Created sucessfully ! ",Toast.LENGTH_SHORT).show();
finish();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
而不是一次执行块,而是执行其他部分。并显示消息,用户已经存在。另一方面,帐户正在创建。
用于检查用户是否签名,您必须使用Firebase进行身份验证。
firebase数据库仅用于存储数据,它无法检查用户是否登录或不签名或喜欢其他内容。
FirebaseAuth auth;
auth = FirebaseAuth.getInstance();
然后,如果用户为null,则必须从auth中获得用户,则未在
中签名。FirebaseUser user = auth.getCurrentUser(); //method
以下代码用于注册用户: -
auth.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
Log.d(TAG, "createUserWithEmail:success");
FirebaseUser user = mAuth.getCurrentUser();
updateUI(user);
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "createUserWithEmail:failure", task.getException());
Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
updateUI(null);
}
// ...
}
});