如果用户第二次登录,使用 Firebase 打开不同的活动

Posted

技术标签:

【中文标题】如果用户第二次登录,使用 Firebase 打开不同的活动【英文标题】:Using Firebase open a different activity if user logged in second time 【发布时间】:2021-09-17 16:04:48 【问题描述】:

我在我的项目中使用 Firebase。我想要的是??当新用户登录时,他会在登录后浏览所有活动(如信息活动等),然后进入仪表板。当该用户从应用程序注销并再次登录时,直接转到仪表板,无需再次填写所有信息。

 mAuth.signInWithEmailAndPassword(emailLogin, passwordLogin).addOnCompleteListener(new OnCompleteListener<AuthResult>() 
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) 

                    if (task.isSuccessful()) 
                        if (mAuth.getCurrentUser() != null) 
                            startActivity(new Intent(LoginActivity.this, Bottom_Navigation_Bar.class));
                         else 


                            Intent intent = new Intent(LoginActivity.this, InformationActivity.class);
                            startActivity(intent);
                            Toast.makeText(LoginActivity.this, "Sign In , Successful...", Toast.LENGTH_SHORT).show();
                        
                     else 
                        Toast.makeText(LoginActivity.this, "Error Occurred, while Signing In... ", Toast.LENGTH_SHORT).show();
                    

                
            );

我正在使用此代码,但它会将新老用户都带到仪表板。

【问题讨论】:

【参考方案1】:

简单检查:

if (mAuth.getCurrentUser() != null)  ... 

不会帮助您了解用户是否是第一次登录,它只会检查用户是否已通过身份验证。要知道用户是第一次登录,请使用以下代码行:

mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() 
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) 
        boolean isNewUser = task.getResult().getAdditionalUserInfo().isNewUser();
        if (isNewUser) 
            Log.d(TAG, "The user is new!"); //Send the user through all activities
         else 
            Log.d(TAG, "The user is NOT new!"); //Send the user to the dashboard
        
    
);

编辑:

根据您的评论:

getAdditionalUserInfo() 方法有什么作用?

task.getResult() 返回AuthResult 类型的对象。话虽如此,我们可以在这样的对象上调用上述方法,以返回AdditionalUserInfo 类型的对象。正如您在文档中看到的那样,有一个名为 isNewUser() 的方法:

返回用户是新用户还是现有用户

【讨论】:

它对我不起作用没有提供足够的信息,所以我可以提供帮助。但是,我已经用更多信息编辑了我的问题。请检查。 正如我在编辑的答案中提到的,getAdditionalUserInfo() 返回一个 AdditionalUserInfo 类型的对象。因此,您可以使用其中存在的任何方法,isNewUser()、getUsername()、getProviderId() 或 getProfile()。而已。所以它不检查其他任何东西。如果您需要再次检查,则需要明确地进行。 没有看到你的代码,很遗憾,我帮不上什么忙。因此,如果您遇到错误,请使用自己的 MCVE 发布新问题,以便我和其他 Firebase 开发人员可以帮助您。 我刚刚将您的问题回滚到最初的问题。请尽量遵守这个社区的规则,如果出现其他问题,请提出另一个问题。通过这种方式,我或其他 Firebase 开发人员可以为您提供帮助。我真的很感激。

以上是关于如果用户第二次登录,使用 Firebase 打开不同的活动的主要内容,如果未能解决你的问题,请参考以下文章

Facebook iOS SDK - 第二次登录时多余的“确定”点击?

React native-如何在 react native 中只显示一次登录屏幕?

APP纯黑盒测试—某些可以试试的操作

Spring Security + Thymeleaf - 第二次登录后的 TemplateInputException

如何使条款和条件仅在我首次登录 Google 时显示?

登录页面不保存用户的详细信息,必须一次又一次登录