如果用户第二次登录,使用 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 中只显示一次登录屏幕?
Spring Security + Thymeleaf - 第二次登录后的 TemplateInputException