【问题标题】:Android Studio Firebase Authentication (Fix Version of Google Services)Android Studio Firebase 身份验证(Google 服务的修复版本)
【发布时间】:2017-04-12 19:33:42
【问题描述】:

我按照 API 文档设置用户身份验证。我的registerActivity 正确地将数据发送到 Firebase 数据库,但是当我尝试为我的loginActivity 设置登录身份验证时,登录按钮并没有像我预期的那样转到mainActivity。我的用户登录设置是否有问题,或者我应该以其他方式使用登录按钮的意图?

public class LoginActivity extends AppCompatActivity  {

private EditText emailField;
private EditText passwordField;

private Button loginButton;

private FirebaseAuth loginAuth;
private FirebaseAuth.AuthStateListener loginAuthListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login3);

    loginAuth = FirebaseAuth.getInstance();

    emailField = (EditText) findViewById(R.id.emailField);
    passwordField = (EditText) findViewById(R.id.passwordField);
    loginButton = (Button) findViewById(R.id.loginButton);

    final TextView RegisterLink = (TextView) findViewById(R.id.registerLink);

    loginAuthListener = new FirebaseAuth.AuthStateListener(){
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){
            if(firebaseAuth.getCurrentUser() != null){
                startActivity(new Intent(LoginActivity.this, MainActivity.class));
            }
        }
    };

    RegisterLink.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent registerIntent = new Intent(LoginActivity.this, RegisterActivity.class);
            LoginActivity.this.startActivity(registerIntent);
        }
    });

    loginButton.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            startSignIn();
        }
    });
}

@Override
protected void onStart(){
    super.onStart();

    loginAuth.addAuthStateListener(loginAuthListener);
}



private void startSignIn(){
    String email = emailField.getText().toString();
    String password = passwordField.getText().toString();

    if(TextUtils.isEmpty(email) || TextUtils.isEmpty(password)){
        if(TextUtils.isEmpty(email)){
            Toast.makeText(LoginActivity.this, "Email Field is Empty", Toast.LENGTH_LONG).show();

        }else if(TextUtils.isEmpty(password)){
            Toast.makeText(LoginActivity.this, "Password Field is Empty", Toast.LENGTH_LONG).show();

        } else{
            Toast.makeText(LoginActivity.this, "Email Field and Password Field are Empty", Toast.LENGTH_LONG).show();
        }


    } else {

        loginAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if(!task.isSuccessful()){
                    Toast.makeText(LoginActivity.this,"Either the Password or Email Field is Incorrect. Please Try Again.", Toast.LENGTH_LONG).show();
                }
            }
        });
    }

}

}

【问题讨论】:

    标签: java android android-intent firebase firebase-authentication


    【解决方案1】:

    我在运行应用程序时查看了日志控制台,发现模拟器运行的谷歌服务版本不是最新的。要解决此问题,您可以...

    • 在真正的安卓设备上运行应用程序
    • 确保您使用所有依赖项的相同版本(全部为 9.8,全部为 10.0.0,依此类推)
    • 一定要在你的 android 工具列表中点击“同步项目与 gradle 文件”

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2017-11-08
      • 2020-09-25
      • 2017-03-11
      • 2021-01-05
      • 1970-01-01
      • 2016-09-26
      相关资源
      最近更新 更多