ホームページ >Java >&#&チュートリアル >Firebase ログイン後に複数のユーザー タイプ(学生、教師、管理者)を特定のアクティビティにリダイレクトする方法
Firebase で開発されているアプリでは、ログイン後に 3 種類のユーザーをそれぞれのアクティビティにリダイレクトする必要がありました。アプリは、次のコードを使用して、学生と教師という 2 つのユーザー タイプをすでに正常にリダイレクトしていました:
mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(FirebaseAuth firebaseAuth) { FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); if (mAuth.getCurrentUser() != null) { String uid = mAuth.getInstance().getCurrentUser().getUid(); DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); uidRef = rootRef.child("STUDENTS").child(uid); ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) { if (dataSnapshot.exists()) { startActivity(new Intent(MainActivity.this, student.class)); } else { startActivity(new Intent(MainActivity.this, teacher.class)); } } @Override public void onCancelled(DatabaseError databaseError) { } }; uidRef.addListenerForSingleValueEvent(valueEventListener); } else { Log.d("TAG", "firebaseUser is null"); } } };
しかし、3 番目のユーザー タイプである管理者 (admins) を追加する段階になったときに混乱が生じました。
この問題の解決策には、データベース構造を変更して 3 番目のユーザー タイプを含め、ユーザーの「Type」属性をチェックするリスナーを追加する必要がありました。ユーザー ノード。
新しいデータベース スキーマは次のようになります。
Firebase-root | --- users | --- uidOne | | | --- name: "Ed" | | | --- type: 1 | --- uidTwo | | | --- name: "Tyff" | | | --- type: 2 | --- uidOne | | | --- name: "Admin" | | | --- type: 3
ValueEventListener は、「 「」属性を入力し、その値に基づいてユーザーをリダイレクトします:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid(); DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference uidRef = rootRef.child("users").child(uid); ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if (dataSnapshot.child("Type").getValue(Long.class) == 1) { startActivity(new Intent(MainActivity.this, student.class)); } else if (dataSnapshot.child("TYPE").getValue(Long.class) == 2) { startActivity(new Intent(MainActivity.this, teacher.class)); } else if (dataSnapshot.child("TYPE").getValue(Long.class) == 3) { startActivity(new Intent(MainActivity.this, admin.class)); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { Log.d(TAG, databaseError.getMessage()); } }; uidRef.addListenerForSingleValueEvent(valueEventListener);
Withこれらの変更により、アプリはログイン後に 3 つのユーザー タイプをそれぞれのアクティビティに正常にリダイレクトします。
以上がFirebase ログイン後に複数のユーザー タイプ(学生、教師、管理者)を特定のアクティビティにリダイレクトする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。