android - Android Firebase数据库自定义用户名登录不起作用
问题描述
我尝试使用自定义用户名使用 Google Firebase 数据库登录,但它不起作用。
我需要如何获取用户名和密码以检索登录用户名和密码:
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.Toolbar;
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.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 java.util.ArrayList;
import java.util.Collections;
public class LoginActivity extends AppCompatActivity {
//private Toolbar toolbar;
private EditText username1, password2;
private Button buttonlogin;
private DatabaseReference databaseReference;
// private FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_login );
username1 = (EditText) findViewById ( R.id.username1 );
password2 = (EditText) findViewById ( R.id.password2 );
buttonlogin = (Button) findViewById ( R.id.buttonlogin );
// databaseReference = FirebaseDatabase.getInstance ().getReference ( "Usres" );
// firebaseAuth = FirebaseAuth.getInstance ();
buttonlogin.setOnClickListener ( new View.OnClickListener () {
@Override
public void onClick(View view) {
login ();
}
} );
}
private void login() {
final String Username = username1.getText ().toString ().trim ();
final String Password = password2.getText ().toString ().trim ();
databaseReference = FirebaseDatabase.getInstance ().getReference ( "Usres" );
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Artist artist = dataSnapshot.getValue(Artist.class);
if (artist.username.equals(Username) && artist.password.equals(Password)) {
startActivity(new Intent(getApplicationContext(), UserLogin.class));
} else if (Username.equals("Crazy") && Password.equals("Tasty")) {
startActivity(new Intent(getApplicationContext(), Admin.class));
} else {
Toast.makeText(getApplicationContext(), "Username and Password is incorrect", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
}
}
上面显示的是我使用过的数据库,Firebase
我想要的没有发生。
在尝试登录应用程序时立即终止并退出应用程序
解决方案
要解决这个问题,您只需更改以下代码行:
databaseReference = FirebaseDatabase.getInstance ().getReference ( "Usres" );
至
databaseReference = FirebaseDatabase.getInstance().getReference("Users");
正如我在您的数据库架构中看到的那样,您的用户节点名为Users
而不是Usres
.
推荐阅读
- postgresql - Datagrip:创建postgres索引而不等待执行
- javascript - Bcrypt.compareSync 总是返回 false
- c# - ASP.NET Core MVC + Entity Framework Core 如何获取新增对象的id
- python - 使用字符串转换连接两个整数时出错
- flutter - Flutter StatefulWidget 不会更新
- python - 组合框不显示在 tkinter
- django - 在 reverse() 中将参数传递到 args 的语法
- ios - 如何通过快速操作(3D 触摸)Swift 调用视图控制器
- php - php空数据记录删除
- javascript - 条件渲染中的 VueJS 数据列表