重新连接到网络后如何获取有效的 Firebase appcheck 令牌?

2024-03-25

我在我的 Android 应用程序中使用 Firebase appcheck。它工作得很好,只是如果我在飞行模式下启动应用程序然后禁用飞行模式(即模拟在没有网络连接的情况下打开应用程序,然后获得网络连接),它总是会失败。

当我没有连接时,我会反复收到:

D/PersistentConnection:pc_0 - 尝试获取身份验证令牌

D/PersistentConnection:pc_0 - 尝试获取应用程序检查令牌

D/PersistentConnection: pc_0 - 成功获取令牌,打开连接

D/Connection: conn_2 - 打开连接

D/WebSocket:ws_2 - WebSocket 错误。

D/PersistentConnection:pc_0 - 由于其他原因断开连接

当我重新获得连接时,我得到:

W/PersistentConnection:pc_1 - Firebase 数据库连接被服务器强制终止。不会尝试重新连接。原因:appcheck 令牌无效

我正在 MainActivity onCreate() 方法中初始化应用程序检查,如下所示。我尝试将以下代码移至网络连接观察器中(如中所述https://firebase.google.com/docs/database/android/offline-capability#section-connection-state https://firebase.google.com/docs/database/android/offline-capabilities#section-connection-state),但没有成功。

FirebaseApp.initializeApp(/*context=*/this)
val firebaseAppCheck = FirebaseAppCheck.getInstance()

firebaseAppCheck.installAppCheckProviderFactory(
    SafetyNetAppCheckProviderFactory.getInstance()
)
firebaseAppCheck.setTokenAutoRefreshEnabled(true)

我访问实时数据库的代码如下:

private val postListener : ValueEventListener = object : ValueEventListener {

        override fun onDataChange(dataSnapshot: DataSnapshot) {

            Timber.d("MetaData", "loadPost:onDataChange")

        }

        override fun onCancelled(databaseError: DatabaseError) {
            // Getting Post failed, log a message
            Timber.d("MetaData", "loadPost:onCancelled", databaseError.toException())
        }
    }

...

database.reference.child("databasename").addValueEventListener(postListener)

更广泛地说,是否有更好的方法来设置 appcheck 令牌,以便应用程序可以从错误令牌中恢复?

不幸的是,这个 appcheck 的东西对我来说几乎是一个黑匣子。任何有关如何解决此问题或调试它的提示都会有所帮助。


None

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

重新连接到网络后如何获取有效的 Firebase appcheck 令牌? 的相关文章

  • Android中如何通过ViewModel类在Activity和Fragment之间共享数据?

    我想知道是否可以传递一个在 Activity 类中声明的字符串数据 并将该字符串数据传递给 ViewModel 类 然后将数据传递给 Fragment 类 视图模型类 class TimeTableViewModel extends Vie
  • 使用 NEON 内在函数除以浮点数

    我当时正在处理四个像素的图像 这是在armv7对于 Android 应用程序 我想分一个float32x4 t向量由另一个向量组成 但其中的数字与大约不同0 7 to 3 85 在我看来 除法的唯一方法是使用右移 但这是针对一个数字2 n
  • Android版本App更新代码

    我读到如果我们想更新Google Play中的应用程序 版本代码应该高于以前的apk文件 我有一个版本代码为 20 且版本名称为 1 0 的应用程序 那么要更新app 应该如何增加版本号呢 应该增加10吗 或者仅仅 1 就足够了 即版本代码
  • 如何使 FirebaseAuth.AuthStateListener 在 Kotlin 中工作?

    class LoginActivity AppCompatActivity private val firebaseAuth FirebaseAuth getInstance private val firebaseAuthListener
  • 片段内容下方是否存在持久性 BottomSheet?

    Using a 持久底表 https material google com components bottom sheets html bottom sheets persistent bottom sheets 在一个协调器布局 htt
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • RecyclerView 在聊天屏幕中的 notificationDataSetChanged 上滚动到顶部

    我正在尝试使用 recyclerView 创建消息传递类型的屏幕 该屏幕将从底部开始 并在用户到达聊天顶端时加载更多数据 但我面临着这个奇怪的问题 我的 recyclerView 在调用 notificationDataSetChanged
  • 警报对话框中的 Webview 不显示内容

    我正在开发一个 Android 应用程序 我需要在网络视图和警报对话框上显示一个网站 该站点显示在网络视图中 但不显示在警报对话框中 到目前为止 这是我的代码 WebView WebView myWebView WebView v find
  • Android Gradle 问题 - Flutter / Dart

    我的 Gradle 同步有问题 我使用 IntelliJ 和 Android Studio 构建 Flutter Dart 应用程序 我添加了 2 个新的依赖项 现在 Gradle 出现了问题 在 Android Studio 中一切正常
  • Android 无法解析日期异常

    当尝试解析发送到我的 Android 客户端的日期字符串时 我得到一个无法解析的日期 这是例外 java text ParseException 无法解析的日期 2018 09 18T00 00 00Z 位于 偏移量 19 在 java t
  • 如何仅从 Firestore 获取最新更新的数据?

    在 Firestore 上发现任何更改时始终获取整个文档 如何只获取最近更新的数据 这是我的数据 我需要在第一次加载时在聊天中按对象顺序 例如 2018 09 17 30 40 msg和sendby 并且如果数据更新则仅获取新的msg和se
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • 为什么 Google 建议将库复制到您的树中?

    谷歌的Play 服务 API 的使用说明 http developer android com google play services setup html 例如 说 将 extras google google play service
  • Android Studio代理设置构建错误

    每当我尝试在 Android Studio 中构建应用程序时 都会收到以下错误 Error 169 254 16 169 254 16 Will ignore proxy settings for these hosts 我收到错误 5 次
  • 以编程方式向 LinearLayout 添加边框

    我该如何添加以编程方式LinearLayout 的边框 假设我们创建了这个布局 LinearLayout TitleLayout new LinearLayout getApplicationContext TitleLayout setO
  • Android TextureView 和硬件加速

    我正在尝试实现上所示的示例这一页 http developer android com reference android view TextureView html 我已经在运行 android 4 及以上版本的三种不同设备上进行了尝试
  • Activity 暂停时调用 FragmentManager.popBackStack 是否安全

    的文档FragmentManager popBackStack https developer android com reference android app FragmentManager html popBackStack java
  • 如何在android中安装和使用couch db

    我应该如何在 android 中安装和使用 couch Db 我的意思是本地沙发数据库 我可以在平板电脑和模拟器中使用它 为此我必须遵循哪些步骤 我目前正在开发一个使用它的项目 有两种选择 1 couchbase android 是的 co
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private

随机推荐

  • php中计算每个子数组中的元素

    一个例子来自php net http php net manual en function count php提供以下内容 如何独立于 food 数组 输出 3 获取水果和蔬菜的数量 你可以这样做 e
  • 当 Flexbox 项目以列模式换行时,容器不会增加其宽度

    我正在研究一个嵌套的弹性盒布局 它应该按如下方式工作 最外层 ul main 是一个水平列表 当向其中添加更多项目时 该列表必须向右扩展 如果它变得太大 应该有一个水平滚动条 main display flex flex direction
  • maven2:从 WAR 中排除目录

    I tried this http maven apache org plugins maven war plugin examples adding filtering webresources html从我的 WAR 文件中排除整个目录
  • 查找将一个 NumPy ndarray 的行映射到另一个 NumPy ndarray 的一组索引

    我有两个结构化的 2Dnumpy数组是equal原则上 意义 A numpy array a1 b1 c1 a2 b2 c2 a3 b3 c3 a4 b4 c4 B numpy array a2 b2 c2 a4 b4 c4 a3 b3 c
  • 在 React 中将类组件转换为函数式组件

    我正在学习 React hooks 因此为了做到这一点 我尝试将类组件转换为函数组件 但我仍然遇到一些错误 这是作为类编写的原始工作组件 import React Component from react import NavBar fro
  • Restkit:迁移到 0.20

    我正在尝试迁移到 RestKit 0 20 pre2 目前我设法迁移我的映射 至少编译器不再抱怨 但我在创建请求时遇到问题 之前我使用了不再存在的 RKObjectLoader 我之前的代码如下 RKObjectLoader objectL
  • 如何从 Cassandra 获取排序计数器

    我有一排计数器 我想让它的列按值排序 有什么策略或数据模型吗 恐怕没有办法让 Cassandra 为你做这件事 您需要从 Cassandra 获取整行 对大行进行分页 并在客户端中对其进行排序 如果您的解决方案可以处理非最新结果 您可以使用
  • R 中的 na.strings = c()

    我是 R 新手并开始探索na strings c 函数与read csv 我已经读到 使用此选项 所有缺失的值将被替换为 NA 但我在我的文件中没有看到这种情况发生 尽管使用了 但我没有看到输出有任何差异na strings c 如果我遗漏
  • 如何删除由 addEventListener 以事件对象作为参数绑定的匿名函数

    例如 document addEventListener keyup function ev if ev ctrlKey dosomething false 有什么办法可以去掉匿名函数吗 你可以自己写一个小接口addEventListene
  • tinymce 4 如何添加事件处理程序

    在tinymce 3中 我们似乎可以这样做 Adds a click handler to the current document tinymce dom Event add document click function e conso
  • Angular:延迟加载模块重新加载时重置服务状态

    我的申请中关于服务的结构如下 AppModule AppComponent and HomeComponent Lazy1 Lazy2 Lazy3 我的应用程序从 AppComponent 开始 它重定向到 HomeComponent 然后
  • 正则表达式不以数字开头

    如何创建一个匹配所有开头不带数字的字母数字的正则表达式 现在我有 0 9 a zA Z0 9 例如 1ab 不匹配 ab1 匹配 1 bc 不匹配 bc 1 匹配 你所写的内容存在三处错误 首先 要否定一个字符类 您可以将 inside括号
  • 雪花中有保存或加载工作表的选项吗?

    雪花中有保存或加载工作表的选项吗 或者将工作表下载到本地并从本地加载 我的意思不是通过剪贴板将其粘贴到某些文本编辑器并保存这样的选项 Snowflake 会自动保存您的工作表 您还可以将脚本从本地加载到工作表 但是无法下载工作表 Saved
  • QOpenGLWidget显示黑屏

    我尝试了此处描述的 QOpenGLWidget 示例 https stackoverflow com a 31524956 4564882 https stackoverflow com a 31524956 4564882 但我只得到一个
  • 使用IDLE时的工作目录是什么?

    所以 我正在学习 Python 想创建一个简单的脚本来从互联网下载文件 然后将其写入文件 但是 我正在使用 IDLE 并且不知道 IDLE 中的工作目录是什么或如何更改它 如果我不知道工作目录或如何更改它 如何在 IDLE 中执行文件系统操
  • 如何识别“hw.machine”标识符可靠?

    我正在寻找最官方的来源来完成 维护此方法 NSString platformString NSString platform self platform if platform isEqualToString iPhone1 1 retur
  • 如何获取 Woocommerce 电子邮件通知中的 cookie 值?

    我正在使用 php cookie 从插件检索 woocommerce 感谢页面和客户订单详细信息页面的值 它在感谢页面上工作正常 但没有在电子邮件订单详细信息页面上打印任何内容 我该如何解决此问题 我尝试过使用 php 会话获取值 它仅打印
  • itextsharp - 阅读 1 列(第 1 页)和 2 列(第 2 页)的 PDF 时出现问题

    当打开首页上只有一列而其他页面上有超过一列的 PDF 文件时 我的下面的代码丢失了 有人可以告诉我我做错了什么吗 下面是我的代码 PdfReader pdfreader new PdfReader pathNmArq ITextExtrac
  • 如何在 Paw 中执行并发 HTTP 请求?

    在 Paw 中 如果我有一个长时间运行的请求并尝试调用另一个请求 则会出现一个对话框 其中显示Stop request A request is currently running 与选项Cancel Stop and Stop Send
  • 重新连接到网络后如何获取有效的 Firebase appcheck 令牌?

    我在我的 Android 应用程序中使用 Firebase appcheck 它工作得很好 只是如果我在飞行模式下启动应用程序然后禁用飞行模式 即模拟在没有网络连接的情况下打开应用程序 然后获得网络连接 它总是会失败 当我没有连接时 我会反