当我从 firebase 数据库以各自的角色登录时,我想打开三个不同的活动

Posted

技术标签:

【中文标题】当我从 firebase 数据库以各自的角色登录时,我想打开三个不同的活动【英文标题】:I want to open three different activity when I login with their respective roles from firebase database 【发布时间】:2019-11-21 22:50:02 【问题描述】:

我的 firebase 数据库中有三个角色

    老师 学生 协调员。

如果我用教师登录,那么它应该从数据库中检查角色并打开教师活动。学生和协调员也一样。

** 代码:**

firebaseAuth.signInWithEmailAndPassword(email, password)
                        .addOnCompleteListener(Login_Form.this, new OnCompleteListener<AuthResult>() 
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) 
                                if (task.isSuccessful()) 

                                    Intent intent = new Intent(Login_Form.this, Adminpage.class);
                                    progressDialog.dismiss();
                                    startActivity(intent);

                                 else 
                                    progressDialog.dismiss();
                                    Toast.makeText(getApplicationContext(), "Login Failed Or User Not Available", Toast.LENGTH_LONG).show();
                                

【问题讨论】:

到目前为止你尝试了什么? 您可以尝试使用字段角色存储用户ID, 你可能对这篇文章感兴趣:medium.com/better-programming/… 向我们展示您的代码和您迄今为止所取得的成就! 我尝试过使用 Firebase 身份验证,然后它适用于单一角色。但是对于 3 个不同的角色,我需要相同的内容 【参考方案1】:

这个我试过了

firebaseAuth.signInWithEmailAndPassword(email, password)
                        .addOnCompleteListener(Login_Form.this, new OnCompleteListener<AuthResult>() 
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) 
                                if (task.isSuccessful()) 

                                    Intent intent = new Intent(Login_Form.this, Adminpage.class);
                                    progressDialog.dismiss();
                                    startActivity(intent);

                                 else 
                                    progressDialog.dismiss();
                                    Toast.makeText(getApplicationContext(), "Login Failed Or User Not Available", Toast.LENGTH_LONG).show();
                                

【讨论】:

这不是答案。请改为编辑您的帖子。【参考方案2】:

登录时,您必须使用电话号码或电子邮件 ID。 如果是这样,那么您可以使用输入的电子邮件 ID 获取结果。

 postRef.orderByChild("email").equalTo(email)
        .addListenerForSingleValueEvent(object : ValueEventListener 
            override fun onCancelled(p0: DatabaseError) 

            

            override fun onDataChange(dataSnapshot: DataSnapshot) 
                if (dataSnapshot.exists()) 
                    val userData: HashMap<String, User> = dataSnapshot.value as HashMap<String, User>
                    var  userId :String = ""

                    userData.keys.forEach   userId =it
                    Toast.makeText(this@SplashActivity,"Welcome Back . Happy to see you again" ,Toast.LENGTH_SHORT).show()
                    startHomeActivity()
                 
            
        )

在上面,我检查了电子邮件是否存在于 firebase 数据库中。一旦成功,我们就会有数据快照,您将在其中获得与该电子邮件 ID 相关联的完整数据。在那里您可以检查其教师、学生等是否存在。 检查 dataSnapshot 是否为空,以确保您的 dataSnapshot 包含用户数据。

                val userData: HashMap<String, User> = dataSnapshot.value as HashMap<String, User>

这将为您提供条目的全部数据。

【讨论】:

以上是关于当我从 firebase 数据库以各自的角色登录时,我想打开三个不同的活动的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase 云函数发送通知,通知为空

Android - Firebase - 不同类型的用户登录

用于 Google 登录的 Android Firebase 身份验证失败

退出 Flutter 应用程序不会返回登录页面

Firebase 身份验证会话未过期 [重复]

如何使用 Firebase 获取通知响应数据?