首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

firebase中的displayName返回null,直到我刷新应用程序一次

Firebase是谷歌提供的一个云计算平台,用于构建移动应用程序和网络应用程序。它提供了许多功能和服务,包括实时数据库、身份验证、云存储、云函数等。在Firebase中,displayName属性用于设置用户的显示名称,并且在用户认证过程中通常与其他属性一起保存在用户的身份验证凭据中。

然而,有时在使用Firebase时,可能会出现displayName返回null的情况,直到刷新应用程序一次才能正确获取显示名称。这可能是由于以下几个原因:

  1. 用户首次登录:当用户首次登录应用程序时,Firebase可能需要一些时间来获取和设置用户的显示名称。在这段时间内,displayName属性可能会返回null。一旦刷新应用程序,Firebase将能够正确获取显示名称。
  2. 异步加载问题:在某些情况下,可能会存在异步加载的问题,导致displayName属性无法立即获取用户的显示名称。在这种情况下,刷新应用程序可以重新加载相关的异步过程,并获取正确的显示名称。

解决这个问题的方法是使用Firebase提供的用户身份验证监听器来确保在用户认证完成后再获取displayName属性。可以使用如下代码示例:

代码语言:txt
复制
firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    var displayName = user.displayName;
    if (displayName === null) {
      // 等待显示名称获取完成后再进行其他操作
      firebase.auth().currentUser.reload().then(function() {
        displayName = firebase.auth().currentUser.displayName;
        // 进行其他操作
      });
    } else {
      // displayName 不为 null,进行其他操作
    }
  }
});

在上述代码示例中,我们通过监听Firebase的身份验证状态变化,在用户登录后检查displayName属性。如果displayName为null,我们使用currentUser.reload()方法重新加载用户信息,确保displayName属性已经正确获取。然后可以在获取到displayName后继续进行其他操作。

对于Firebase相关的产品推荐,以下是一些与用户身份验证和云存储相关的腾讯云产品:

  1. 云存储:腾讯云对象存储(COS)是一种高度可扩展的云存储服务,提供了存储和访问数据的能力。了解更多:腾讯云对象存储(COS)
  2. 身份认证:腾讯云访问管理(CAM)是一种基于身份的访问控制服务,用于管理用户、角色和权限。了解更多:腾讯云访问管理(CAM)

请注意,这些推荐的产品是腾讯云提供的服务,与Firebase不直接相关。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular v18 现已推出!

与此同时,我们还用新 Material 3 主题和文档刷新了 material.angular.io。您可以在我们指南中找到如何在您应用程序中使用 Angular Material 3!...在接下来几个月里,我们将继续根据你反馈对实现进行迭代,直到我们将其升级为稳定版。...使用 Firebase App Hosting 为您应用提供强大托管功能随着 Web 平台日益复杂,应用程序托管在性能、可靠性、生产力和规模方面起着至关重要作用。...在过去 6 个月中,我们从人们那里收集了更多反馈,并完善了更新体验,使每个人都能够迁移到新构建体验并获得编辑/刷新提升。您可以在我们更新指南中找到我们开发工具,以自动执行更新体验。...此更改将加快您 Angular CLI 安装时间。路由重定向作为函数为了在处理重定向时实现更高灵活性,在 Angular v18 ,redirectTo 现在接受返回字符串函数。

23310
  • 如何获取 C# 类中发生数据变化属性信息

    一、前言 在平时开发,当用户修改数据时,一没有很好办法来记录具体修改了那些信息,只能暂时采用将类序列化成 json 字符串,然后全塞入到日志方式,此时如果我们想要知道用户具体改变了哪几个字段值的话就很困难了...因此,趁着这个假期,就来解决这个一遗留小问题,本篇文章记录了我目前实现方法,如果你有不同于文中所列出方案的话,欢迎指出。.../// protected bool IgnoreValue { get; set; } } 考虑到我可能会包含很多属性信息,如果一个个给属性添加特性会很麻烦...完成了自定义特性之后,考虑到我们后续使用方便,这里我采用创建扩展方法形式来声明我们函数方法,同时我在 PropertyChangelog 类添加了 DisplayName 属性用来存放属性对应于页面上存放名称...== null) properties.Add(i); // 不管类有没有添加特性,只要类属性添加特性,并且 Ignore 为 false

    3.5K40

    selenium&playwright获取网站Authorization鉴权实现伪装requests请求

    如果是像我只是针对某个网站接口cookie,这个方法就显得有点臃肿,还需要自己去整体过滤,而且本地还存在一个及时刷新问题(我遇到过有效期非常短)。...1、selenium是倚靠驱动进行浏览器操作,浏览器更新了我就得更新驱动,但我没有做自动更新驱动功能 2、之前一是固定某个版本,这样驱动一用一个就行,现在不得不面临三个选择 更新驱动,再次禁用更新...Request事件里面有个all_headers方法,会以字典形式返回我们请求请求头信息。...,拿到我们所需要headers信息。...在之后操作,就可以一使用requests进行接口请求了,如果cookie有使用有效期,那么每隔一段时间用playwright进行重新获取,重新伪造请求头就可以了。

    1.2K20

    结合使用 C# 和 Blazor 进行全栈开发

    目前,你不仅要在服务器验证输入,还要在客户端浏览器验证输入。新式 Web 应用程序用户希望获得准实时反馈。在填写长窗体并单击“提交”后仅看到红色错误返回日子已经一去不复返了。...在浏览器运行 Blazor Web 应用程序可以与 C# 后端服务器共享代码。可以将逻辑放入共享库,并在前端和后端使用它。这会带来很多好处。...在“新建项目”对话框,依次单击“ASP.NET Core Web 应用程序”和“确定”,再选择图 1 所示对话框“Blazor”图标。单击“确定”。这会创建默认 Blazor 示例应用程序。...请注意,所有验证规则都只是继承自 Attribute 类并实现 IModelRule 接口 Validate 方法类。如果输入文本超过指定长度上限,图 4 长度上限规则返回错误。...,它可以应用于 Blazor 应用程序新注册窗体。

    6.7K40

    【重磅来袭】在Power BI 中使用Python(4)——PQ数据导出&写回SQL

    ,至少有以下两点: 1.可视化对象导出CSV格式限制3万行数据,这对于数据量动辄上百万甚至上亿表来说是不可接受; 2.而一广为诟病powerquery数据困难问题更是一时半会也得不到解决。...Python一个常用库:pymysql,将dataset数据按行导入MySQL。...这个问题先一放,我们来看另一个问题: 每个国家每日数据我们只保留一次,即便powerquery每次刷新只向MySQL数据库写入一次,但我们也不能保证编写模型时候只刷新一次吧,因为一旦人工刷新多次,造成结果和上面被动造成结果一致...,所以,只要我们解决了人工刷新造成数据重复问题,查询刷新时被动写入多次问题也就顺带解决了。...所以只要每次写回MySQL之前,先判断一下数据库是否已经存在当日数据,如果有,就先删除,再将新数据写入,这样就达到我目的了。

    4.3K41

    缓存框架Caffeine探究

    而本地缓存一般会配置自动剔除策略,为了保护应用程序,限制内存占用情况,防止内存溢出 Caffeine提供了灵活构造方法,从而创建可以满足如下特性本地缓存: 自动把数据加载到本地缓存,并且可以配置异步...假如一有请求访问该key,那么这个缓存将一不会过期 示例: // 在最后一次读或者写入后开始计时,在指定时间后过期。...举个例子,假如我们申明了10秒刷新一次。我们在时间T访问并获取到值v1,在T+5秒时候,数据库这个值已经更新为v2。...即它实现原理是在get方法,调用afterRead时候,调用refreshIfNeeded方法判断是否需要刷新数据。...这就意味着,如果不读取本地缓存数据的话,无论刷新时间间隔是多少,本地缓存数据永远是旧数据!

    2.1K50

    一个Angular 5教程:一步一步指导实现你第一个Angular 5应用程序

    它带有一个完整重写,以及各种改进,包括优化构建和更快编译时间。在这个Angular 5教程,我们将从头开始构建一个笔记应用程序。如果您一在等待学习Angular 5,本教程适合您。 ?...然后,我们将Firebase显示给我们凭据复制到我们应用环境文件,在此处:src/environments/ export const environment = { [...]...除了这些案例陈述之外,我们绝不应该改变我们状态,否则当我们浪费时间寻找我们代码行为不可预测原因时,它会使生活变得悲惨。 让我们将Ngrx添加到我应用程序。...请记住,我们正好将Firebase集成到我应用程序。现在它由于高度可维护Ngrx商店而丢失了。也就是说,它存储在任何地方。...如果我们About在应用程序需要一个页面会怎么样 我们如何将它添加到我们当前代码库?显然,该页面应该是一个组件(与Angular其他内容一样)。我们来生成这个组件。

    42.6K10

    javascript必须要知道闭包,怎么调试闭包

    在 JavaScript ,闭包会随着函数创建而被同时创建。...如果这个函数里面又返回了一个函数,并且在返回这个函数里又访问了外部函数成员,其实这就是闭包。...makeFunc2 其实就产生了闭包,当调用完 makeFunc2 时候它会返回一个函数, myFunc 其实就引用了makeFunc2返回函数,当外部对内部有引用时候makeFunc2 内部成员就不会被释放...); } return displayName; } var myFunc = makeFunc2(); myFunc(); 例子 在做项目中可能会出现多次求2次方或者3次方或者n次方情况...浏览器打开我们需要调试页面,打开开发者工具调到 sources 下找到我们需要调试文件,在第一次调用地方打上断点,刷新一下浏览器 当第一次执行到断点时候观察开发者工具右边位置 call

    53230

    跨程序共享数据——Content Provider 之 ContentResolver基本用法 & 一个读取系统联系人Demo

    Android系统自带电话簿、短信、媒体库等程序都提供了类似的访问接口,这就使得第三方应用程序可以充分地利用这部分数据来实现更好功能。 下面我们就来看一看,内容提供器到底是如何使用。...1.ContentResolver基本用法 对于每一个应用程序来说,如果想要访问内容提供器中共享数据,就一定要借助Content-Resolver类,可以通过Context getContentResolver...path path则是用于对同一应用程序不同表做区分,通常都会添加到authority后面。...也正是因此,ContentResoIver增删改查方法才都接收Uri对象作为参数,因为如果使用表名的话,系统将无法得知我们期望访问是哪个应用程序表。...注意这里moveToNext:第一次调用moveToNext时候,默认就是移动到了第一行游标位置,和调用moveToFirst效果是一样,但是第二次调用moveToNext时候,游标就会向下移动了

    1.3K20

    【干货】手把手教你用苹果Core ML和Swift开发人脸目标识别APP

    【导读】CoreML是2017年苹果WWDC发布最令人兴奋功能之一。它可用于将机器学习整合到应用程序,并且全部脱机。...我没有时间去找到并且标记太多TSwift图像,但是我可以利用从这些模型中提取出来特征,通过修改最后几层来训练数以百万计图像,并将它们应用到我分类任务(检测TSwift)。...首先,在我Swift客户端,我添加了一个按钮,供用户访问设备照片库。用户选择照片后,会自动将图像上载到云端存储: ? 接下来,我编写了上传到我项目的云存储触发Firebase数据库。...在机器学习响应,我们得到: detection_box来定义TSwift周围边界框(如果她在图像检测到的话) detection_scores为每个检测框返回一个分数值。...最后,在我iOS应用程序,可以监听图像Firestore路径更新。如果检测到,我会下载图像,并与检测分数一起显示在应用程序。这个函数将替换上面第一个Swift代码片段注释: ?

    14.8K60

    JUnit5学习之六:参数化测试(Parameterized Tests)基础

    :{ “a”, “b”, “c” },每个元素执行一次; 至此,咱们已体验过最简单参数化测试,可见就是想办法使一个测试方法多次执行,每次都用不同参数,接下来有关参数化测试更多配置和规则将配合实战编码逐个展开...@NullSource @ValueSource(strings = { "a", "b", "c" }) 执行结果如下图红框,可见null作为入参被执行了一次: 与@NullSource...("静态方法返回集合,用此集合每个元素作为入参") @ParameterizedTest @MethodSource("stringProvider") void methodSourceTest...如果它们不在同一个类,就要指定静态方法整个package路径、类名、方法名,如下所示,类名和方法名之间用#连接: @Order(10) @DisplayName("静态方法返回集合,该静态方法在另一个类...() { return Stream.of("apple3", "banana3"); } @Order(11) @DisplayName("静态方法返回集合,

    90620

    重新解读React.Component

    用于返回一个 DOM 时并且用上某些条件情况 几个渲染限制 When returning null or false, ReactDOM.findDOMNode(this) will return...state而通过props来刷新情况, 就可以在这个函数里面判断新和旧 prop 是否相等, 并根据判断结果刷新state shouldComponentUpdate(nextProps, nextState...) 在新 prop 或者 state 接收到时候, 并且在刷新之前执行 默认情况下返回true, 这个函数会导致render()刷新 另外就算是返回false, 也无法防止子模块刷新 Currently... 第二个参数是一个 callback, 当state修改之后执行 updater 使用方法 this.setState((prevState, props) => { return {counter...} /> ; // props.color will remain null } displayName 这个其实是 debug 时候方便查看用 相关文章: https://reactjs.org

    31430

    Android学习--跨程序共享数据之内容提供其探究

    这个参数被称为内容URI,内容URI给内容提供器数据表建立了唯一标识符,它主要是由两部分组成,一部分是 authority,它是用于对不同应用程序做区分,一般为了避免冲突,都会采取程序包方式来进行命名..., 另一部分是path,path则是相对于同一应用程序表走区分,通常都是添加在authority后面。...指定查询结果排序方式       查询完成之后返回仍然是一个Cursor对象,这时候我们就可以将数据从Cursor对象逐个读取出来了,       读取思路仍然是通过移动游标的位置来遍历Cursor...); } // 给适配器发消息说数据改变了,这时候会重新刷新一次数据 adapter.notifyDataSetChanged...,具体参数我们就不在说了,前面我们已经说过,查询具体结果就在cursor对象存放返回       insert()       添加数据我们也就不再说了,成功之后会返回一个用于表示这条记录URI

    60130

    2023 Google 开发者大会:Firebase技术探索与实践:从hello world 到更快捷、更经济最佳实践

    在本文中,前面我会向大家介绍这款产品特性,以及如何使用它开发一个非常简单应用,最后我们将探讨Firebase Cloud Functions for Firebase 全新并发选项及其如何影响应用程序开发...总而言之,在FireBase开发,你能使用到所有可能用到应用。...可以从 Google CDN 添加库,也可以使用 npm 在本地安装它们,然后将它们打包到应用程序。...Firebase 控制台,进入项目概览页面,单击 Web 图标网络应用程序图标创建一个新 Firebase Web 应用。...在“用户”选项卡,我们应该会看到刚刚输入用于登录应用程序帐户信息。

    41760

    我们弃用 Firebase

    你可以编写实现实时数据同步应用程序,而且不需要开发大量传输逻辑。那些在自制即时通讯应用程序中使用了长轮询请求用户肯定会喜欢它。...Firebase Hosting 不提供细粒度文件控制:你可以部署整个应用程序,也可以什么都不部署。也许不常见,但我们在静态页面生成和调试 CDN 问题上遇到了限制。...提取机器可读 CI token 是的,我喜欢将 CI token 直接传递到我秘密管理器。...这个 Web 片段会将站点配置为使用特定 Firebase 应用程序,并借助环境变量使我们可以跨项目保留脚手架。...GCP 偏向之一:通过移除 Firebase 特性迫使人们迁移到 GCP 在过去几个月中,Firebase 去掉了仪表板 Cloud Function 日志。

    32.6K30

    Flutter 3.0正式发布:稳定支持6大平台,字节跳动是主要用户

    虽然 Flutter 自发布以来,就一能够与搭载 M1 芯片苹果设备兼容,但新版本能够充分利用 Dart 语言对苹果芯片支持,从而在 M1 设备上加快编译速度、支持 macOS 应用程序通用二进制文件...Firebase 与 Flutter 应用程序构建远不止于 UI 框架。应用程序发布者需要一整套工具来完成项目的构建、发布和运营,具体涵盖身份验证、数据存储、云功能和设备测试等服务。...根据 SlashData 开发者基准测试结果,62% Flutter 开发者会在应用程序中使用 Firebase。...所以在过去几个版本,开发团队一Firebase 密切配合,希望进一步增强 Flutter 集成统筹效果。...超 50 万款应用由 Flutter 构建而成 Sneath 感慨道:“当初我们踏上 Flutter 探索之旅,目的是希望彻底改变应用程序开发方式:将 Web 应用迭代开发模型,与以往游戏软件硬件加速图形渲染和像素级控制结合起来

    7.4K20
    领券