2017-07-17 8 views
0

Firebaseリアルタイムデータベースを実装したアンドロイドAppを開発中です。そして今、私はデータベースに保存されている電子メールIDとパスワードでログインしたいと思っています。私はfirebase認証が認証に使用できることを知っていますが、私はSqlやSQLのようにリアルタイムデータベースを使ってログインしたいと思います。ファイヤーベースリアルタイムデータベースに格納された電子メールを使用してログイン

database

答えて

2

これを行った。まず、私は

Query query = databaseReference.child("users").orderByChild("email").equalTo(txvUsername.getText().toString().trim()); 
    query.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if (dataSnapshot.exists()) { 
       // dataSnapshot is the "issue" node with all children with id 0 

       for (DataSnapshot user : dataSnapshot.getChildren()) { 
        // do something with the individual "issues" 
        UsersBean usersBean = user.getValue(UsersBean.class); 

        if (usersBean.password.equals(txvPassword.getText().toString().trim())) { 
         Intent intent = new Intent(context, MainActivity.class); 
         startActivity(intent); 
        } else { 
         Toast.makeText(context, "Password is wrong", Toast.LENGTH_LONG).show(); 
        } 
       } 
      } else { 
       Toast.makeText(context, "User not found", Toast.LENGTH_LONG).show(); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

おかげ..

+0

ありがとうございました!私の一日を保存しました:) – Mohammad

+0

ようこそ.. :) @モハマド –

1

私はあなたがValueEventListener、OnDataChangeの方法とDatasnapshotを使用する方法を知っていると仮定しています。

上記のとおり、SQLまたはMySQLのようにしたいとします。だから、電子メールを使用する代わりに、私はユーザー名とパスワードを使用します。

Firebase認証を使用せずにユーザーを認証できます。ただし、これはデータベースのセキュリティには推奨されません。

{ 
    "userList": { 
    "JRHTHaIsjNPLXOQivY": { 
     "userName": "userA", 
     "password": "abc123" 
    }, 
    "JRHTHaKuIFIhnj02kE": { 
     "userName": "userB", 
     "password": "abc123" 
    } 
    }, 
    "userAuth": { 
    "userA": "JRHTHaIsjNPLXOQivY", 
    "userB": "JRHTHaKuIFIhnj02kE" 
    } 
} 

上記のように、私はfirebase dbにuserNameとuserIdを保存しました。ユーザーがユーザー名とパスワードを入力するときは、userAuthのusernameを使用してuserIdを読み取る必要があります。 userIDを取得したら、それを使用してuserListにアクセスしてユーザーの詳細を確認します。ここで入力したパスワードを確認します。

{ 
    "userList": { 
    "userA": { 
     "password": "abc123" 
    }, 
    "userB": { 
     "password": "abc123" 
    } 
    } 
} 

または、このようにユーザーを認証するだけで済みます。

+0

..オーケーをデータベースから特定の電子メールIDのデータをフェッチし、そのパスワードを比較して行うための関連機能を割り当てるよりも、私はそれを得るが、あなたはどのようにそのためのコードを追加することができます –

+1

@UpendraShahコードに関しては、データベースの保存と取り出しの方法に関するfirebaseのドキュメントをチェックすることができます。 https://firebase.google.com/docs/database/android/read-and-write – UmarZaii

+0

ご回答ありがとうございます。私は私の方法で解決策を得ます。 –

関連する問題