ホームページ >Java >&#&チュートリアル >Firebase ログイン後に複数のユーザー タイプ(学生、教師、管理者)を特定のアクティビティにリダイレクトする方法

Firebase ログイン後に複数のユーザー タイプ(学生、教師、管理者)を特定のアクティビティにリダイレクトする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-22 02:04:13807ブラウズ

How to Redirect Multiple User Types (Students, Teachers, and Admins) to Specific Activities After Firebase Login?

複数のユーザー タイプを特定のアクティビティにリダイレクトする

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。