首页 > 解决方案 > 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我想要的没有发生。

在尝试登录应用程序时立即终止并退出应用程序

标签: androidfirebasefirebase-realtime-databasefirebase-authentication

解决方案


要解决这个问题,您只需更改以下代码行:

databaseReference = FirebaseDatabase.getInstance ().getReference ( "Usres" );

databaseReference = FirebaseDatabase.getInstance().getReference("Users");

正如我在您的数据库架构中看到的那样,您的用户节点名为Users而不是Usres.


推荐阅读