检查用户是否经过密码验证或通过某些提供商进行验证

2023-12-25

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

Code

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

            }
        }

Problem: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 is not facebook.com or google.com这意味着用户已使用用户名和密码进行身份验证,但此语句是不正确!在这两种情况下,都会使用用户名和密码对用户进行身份验证。的情况下facebook.com用户将使用来自 facebook 的凭据进行身份验证,以防万一google.com用户将使用来自的凭据进行身份验证GoogleSignInAccount object.

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查用户是否经过密码验证或通过某些提供商进行验证 的相关文章

随机推荐

  • 如何在 nextflow 工作流程中正确格式化“pod.securityContext”指令?

    我正在尝试配置podNextflow 流程中的指令 文档在这里 https www nextflow io docs latest process html process pod 我正在尝试遵循解决方案在这个SO问题中提供 https s
  • 如何在Powerpoint 2007 VBA中检测主题字体?

    有谁知道如何使用 VBA 检测 Powerpoint 2007 幻灯片对象中主题字体的使用 如果有人看Shape TextFrame TextRange Font Name字体名称显示为简单名称 例如 Arial 无论字体是否指定为固定名称
  • 在地址栏中隐藏查询参数 - VueJS

    我正在使用 Vue js 2 我正在尝试创建一个链接 将我发送到另一个页面 这就是我所拥有的 div div
  • 可以在亚马逊s3上存储json吗?

    我想将 json 文件存储到我的亚马逊 s3 然后使用 ajax 请求检索它 不幸的是 s3 似乎不允许内容类型 application json 我应该将文件保存为文本 纯文本 然后使用 php 添加标头 我已经找到问题了 我以错误的方式
  • 让 NSTimeZone 在单元测试中无故障

    因此 在 Objective C 中对日历代码进行单元测试时存在以下问题 时区包含有关夏令时的信息 因此您在夏天编写一个测试 预计 6 月 10 日的日出发生在早上 6 02 您的测试通过了 稍后 您在非 DST 时运行测试并且失败 因为当
  • Python 删除链表中的重复项

    我正在运行下面的代码以从链接列表中删除重复项 但我的代码仅在删除重复项之前打印链接列表 一旦调用removeDup方法 它就不会打印任何内容 下面是我的代码 请告诉我我错过了什么 class Node def init self data
  • 如何在 Chrome 开发工具中查找事件监听器?

    我知道将鼠标悬停在一个元素上会导致另一个元素添加一个新类 如何检查此 eventListener 在 Chrome 上的位置和内容 这Event ListenersChrome 中的选项卡仅列出文档上的一些侦听器 而不是任何特定元素 要查看
  • FXML 中的 JavaScript 脚本

    我正在尝试从 FXML 运行以下示例参考 https docs oracle com javase 8 javafx api javafx fxml doc files introduction to fxml html script bl
  • 生成随机字符串[重复]

    这个问题在这里已经有答案了 可能的重复 时间 2019 03 17 标签 c randomstringgenerator https stackoverflow com questions 1122483 c sharp random st
  • 使用 externalTrafficPolicy: Local 在 GKE 上是否可以实现无中断滚动更新?

    我有一个 GKE 集群 1 12 10 gke 17 我正在运行nginx 入口控制器 https github com kubernetes ingress nginx with type LoadBalancer 我已经设置了exter
  • 序列化多个对象

    我的序列化代码是这样的 public class slab public int lowerlimit get set public int upperlimit get set public int percentage get set
  • 在 Spark GraphX 中更新节点属性时选择什么最佳结构?

    我有一段时间在寻找一种更新 GraphX 中节点属性的方法 我正在研究一个由节点和节点属性组成的图 例如 1 2 true 在此示例中 1 是节点 ID 2 是节点的标签 true 表示节点已被访问 我已经使用 GraphLoader 加载
  • MySQL - my.cnf 中的跳过锁定有什么作用?

    我在 RHEL5 上使用 MySQL 5 0 67 并基于 my huge cnf 进行配置 我在 MySQL 手册中找不到配置文件中出现的 skip locking 行的任何内容 应该将其替换为 skip external locking
  • System.Text.Json.JsonSerializer.Serialize 返回空 Json 对象“{}”[重复]

    这个问题在这里已经有答案了 环境 Visual Studio 2019 16 3 8 NET 3 0 100 NET Core 3 0单元测试 以下对 System Text Json JsonSerializer Serialize 的所
  • 无法在 Aptana 中运行 ruby​​ hello world 应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 无法在 Aptana 中运行 ruby hello world 应用程序 https stackoverflow com questions 6889711 cant run a ruby hello
  • D3.js:显示有限数量的刻度

    我正在尝试使用d3 ticks 根据文档 https github com mbostock d3 wiki SVG Axes wiki ticks 我应该能够限制轴上显示的刻度数 然而 这似乎根本不限制刻度数 xAxis d3 svg a
  • Windows环境下开发React Native的热重载问题

    每个人 我最近正在开发 React Native 我已经成功创建了一个 Android 应用程序示例作为安装指南 https facebook github io react native docs getting started html
  • 减少存储库以聚合根

    我目前拥有数据库中几乎每个表的存储库 并且希望通过将它们减少为仅聚合根来进一步使自己与 DDD 保持一致 假设我有下表 User and Phone 每个用户可能拥有一部或多部电话 如果没有聚合根的概念 我可能会这样做 assuming I
  • 棒棒糖视图的波纹效果

    我一直在为 Lollipop API 21 开发一个应用程序 当我改变Button给某物上色 波纹效果不起作用 我找到了一些用于连锁反应的第三方库 但我想使用标准 API 来做到这一点 This answer https stackover
  • 检查用户是否经过密码验证或通过某些提供商进行验证

    我的应用程序中有简单的用户名和密码 Facebook 和 Google 身份验证 我想对密码经过身份验证的用户执行不同的操作 Code FirebaseUser user FirebaseAuth getInstance getCurren