问题修正更新:通过将Firebase降级到9.6.0(我选择的随机版本)来修复。我假设原始问题与模拟器的好戏或其他事情有关。
旧问题:我需要帮助,尝试设置Firebase Auth以登录用户。我已经在我的Firebase控制台中启用了这项功能,之前我已经完成了这项工作,并且几周前将其作为课程作业。但是这次我在尝试登录时获得了Null Object Reference。
我开始认为这与我的gradle文件有关。 mAuth不为空,字符串电子邮件和密码不为空。我只是关注此Firebase指南:https://firebase.google.com/docs/auth/android/password-auth
以下全班。错误开始的第43行(如截图所示)是 ' mAuth.signInWithEmailAndPassword(电子邮件,密码)'
package com.example.bri.inclass09;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
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.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 LoginActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
private EditText emailET, passwordET;
private Button login, signup;
private static final String TAG = "test";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
mAuth = FirebaseAuth.getInstance();
Log.d(TAG, "mAuth is: " + mAuth.toString());
login = findViewById(R.id.loginButton);
signup = findViewById(R.id.signupButton);
emailET = findViewById(R.id.loginEmailET);
passwordET = findViewById(R.id.loginPassET);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = emailET.getText().toString();
String password = passwordET.getText().toString();
Log.d(TAG, email + " " + password);
mAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(LoginActivity.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();
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "createUserWithEmail:failure", task.getException());
Toast.makeText(LoginActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
});
}
@Override
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
//FirebaseUser currentUser = mAuth.getCurrentUser();
}
}
答案 0 :(得分:0)
在app模块build.gradle文件中:
apply plugin: 'com.google.gms.google-services'
是错位的。它应该是最后一行,外部 dependencies
块。
此外,设备或模拟器必须安装一个与您构建的Firebase版本兼容的Google Play服务版本。如果您在设备上看到此问题,可以前往Play商店下载最新版本。如果您使用的是模拟器,则需要使用SDK Manager为您正在使用的模拟器下载最新的Google API系统映像。
答案 1 :(得分:0)