gpt4 book ai didi

java - 检查用户是否通过密码验证或使用某些提供商

转载 作者:行者123 更新时间:2023-11-30 10:12:27 25 4
gpt4 key购买 nike

我的应用程序中有简单的用户名和密码、Facebook 和 Google 身份验证。我想对密码 Authenticated 用户执行不同的操作。

代码

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
for (UserInfo profile : user.getProviderData()) {
// Id of the provider (ex: google.com)
String providerId = profile.getProviderId();
if(providerId.equals("facebook.com") | providerId.equals("google.com"))
{
Toast.makeText(this,"fb or goole method is used",Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this,"Simmple method is used",Toast.LENGTH_SHORT).show();

}
}

问题: if 和 else 都在循环中执行。有什么解决办法吗?

最佳答案

如果您使用以下 if 语句:

if(providerId.equals("facebook.com") | providerId.equals("google.com")) {
Toast.makeText(this,"fb or goole method is used",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this,"Simmple method is used",Toast.LENGTH_SHORT).show();
}

这意味着如果 providerId 不是 facebook.comgoogle.com 这意味着用户已通过用户名和密码进行身份验证,但此声明不正确!在这两种情况下,用户都使用用户名和密码进行身份验证。在 facebook.com 的情况下,用户将使用来自 facebook 的凭据进行身份验证,而在 google.com 的情况下,用户将使用来自 facebook 的凭据进行身份验证来自 GoogleSignInAccount 对象。

那么如果您使用该 if 语句会发生什么情况,首先它会评估用户是否通过用户名和密码进行身份验证,这显然是因为 user != null 然后将尝试找到 providerId,可以是facebook.comgoogle.com。这就是为什么显示 Toast 消息的顺序是 使用 Simmple 方法 和第二个 使用 fb 或 goole 方法

编辑: 我能想到的最简单的方法是拥有三个不同的身份验证部分并跟踪用户访问了哪一个。如果用户按下 google 登录按钮,那么他将使用 google 登录,对于其他类型则依此类推,

关于java - 检查用户是否通过密码验证或使用某些提供商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51886378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com