首頁 >Java >java教程 >Firebase 登入後如何將多個使用者類型(學生、教師和管理員)重新導向到特定活動?

Firebase 登入後如何將多個使用者類型(學生、教師和管理員)重新導向到特定活動?

Patricia Arquette
Patricia Arquette原創
2024-12-22 02:04:13765瀏覽

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

將多種使用者類型重新導向到特定活動

在Firebase 上開發的應用程式需要在登入後將三種類型的使用者重新導向到各自的活動。該應用程式已經使用以下程式碼成功重定向了兩種使用者類型,即學生和教師:

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");
        }
    }
};

但是,當新增第三種使用者類型,管理員(管理員)時,出現了混亂,並將它們重新導向到其特定活動。

此問題的解決方案包括修改資料庫結構以包含第三種使用者類型並新增偵聽器來檢查使用者的「類型」屬性

資料庫結構

新的資料庫架構如下所示:

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);

透過這些更改,應用程式成功登入後將三種使用者類型重新導向到各自的活動。

以上是Firebase 登入後如何將多個使用者類型(學生、教師和管理員)重新導向到特定活動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn