我通过Android应用程序在firebase中的身份验证中遇到问题。一切都很好的代码和连接。但我仍然没有通过身份验证。我已经完成了所有必需品,如
问题出在signInWithEmialAndPassword
方法内部,if和else语句都没有执行。为什么会这样?我搜索了很多但都是徒劳的。我使用仿真器NEXUS 5X API 26而不是实际设备。
这是代码..
package com.example.abid.fireauthapp;
import java.net.PasswordAuthentication;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
// ..
private EditText mEmailField;
private EditText mPasswordField;
private Button mLoginButton;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
// private DatabaseReference rootRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEmailField = (EditText) findViewById(R.id.emailField);
mPasswordField = (EditText) findViewById(R.id.passwordField);
mLoginButton = (Button) findViewById(R.id.loginButton);
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
//show a welcome messgage and start a new activity
Toast.makeText(MainActivity.this, "Welcome", Toast.LENGTH_LONG).show();
startActivity(new Intent(MainActivity.this,Main2Activity.class));
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// ...
}
};
mLoginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
StartSignIn();
}
});
}
@Override
public void onStart() {
super.onStart();
if (mAuthListener == null) {
mAuth.addAuthStateListener(mAuthListener);
}
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
private void StartSignIn() {
String email = mEmailField.getText().toString();
String pass = mPasswordField.getText().toString();
if (TextUtils.isEmpty(email) || TextUtils.isEmpty(pass)){
Toast.makeText(MainActivity.this, "Fields are empty...", Toast.LENGTH_LONG).show();
}
else {
mAuth.signInWithEmailAndPassword(email, pass)
.addOnCompleteListener(this,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task task) {
Log.d(TAG, "signInWithEmail:onComplete:" + task.isSuccessful());
FirebaseUser user = mAuth.getCurrentUser();
Toast.makeText(MainActivity.this, "You are sign in..", Toast.LENGTH_LONG).show();
startActivity(new Intent(MainActivity.this,Main2Activity.class));
//These Both if and else statement dont get executed... Why ??
if (user == null) {
Log.w(TAG, "signInWithEmail:failed", task.getException());
Toast.makeText(MainActivity.this, "Error Occured",
Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "Signed In successfully..", Toast.LENGTH_LONG).show();
}
// ...
}
});
}
}
}
答案 0 :(得分:0)
像这样更改您的代码。
...
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, "signInWithEmail:success");
FirebaseUser user = mAuth.getCurrentUser();
Toast.makeText(MainActivity.this, "You are sign in..", Toast.LENGTH_LONG).show();
startActivity(new Intent(MainActivity.this,Main2Activity.class));
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInWithEmail:failure", task.getException());
Toast.makeText(MainActivity, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
会发生什么?