首页
学习
活动
专区
工具
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 现在接受返回字符串的函数。

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

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

    3.6K40

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

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

    1.4K20

    结合使用 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.2K50

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

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

    42.7K10

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

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

    54830

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

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

    1.4K20

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

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

    14.9K60

    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("静态方法返回集合,

    96220

    重新解读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

    32230

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

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

    60630

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

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

    43560

    我们弃用 Firebase 了

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

    32.7K30

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

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

    7.5K20

    React源码分析1-jsx转换及React.createElement4

    另外我在第一次学习 react 的时候,就有一个疑惑: import React, { Component } from 'react' 这段代码中,React 似乎在代码中没有任何地方被用到,为什么要引入呢...,发现会提示 'React' must be in scope when using JSX 的 error: 这是因为上述的类组件 render 中返回了 hello, world的 react 提供的api,可以不引入 React,应用程序依然能够正常运行。...; let source = null; // config 不为 null 时,说明标签上有属性,将属性添加到 props 中 // 其中,key 和 ref 为 react 提供的特殊属性...: 相关参考视频讲解:进入学习图片 React.Component 源码 我们回到上述 hello,world 应用程序代码中,创建类组件时,我们继承了从 react 库中引入的 Component,我们再看一下

    79630
    领券