【问题标题】:How Firebase rules get 'request.auth.uid' field?Firebase 规则如何获取“request.auth.uid”字段?
【发布时间】:2022-01-05 12:19:30
【问题描述】:

在应用程序的主线程中,很明显,任何Firestore 查询都会从当前FirebaseAuth 登录中获取request.auth 字段。但我不确定何时涉及工作线程。

假设使用我的应用程序的用户发送一些数据以存储在Firestore 中,其规则允许基于用户 ID 进行写入。现在我将任务添加到 Android WorkManager。即使在工作开始之前,如果用户退出,工作是否成功完成?如果不是,那么正确的做法是什么?

【问题讨论】:

    标签: android firebase google-cloud-firestore firebase-authentication


    【解决方案1】:

    您可以参考这个page 了解有关 WorkManager 基础知识的详细信息。

    WorkerManager 不管理任务中的详细信息,特别是用于对 Firestore 进行 API 调用的凭据。

    任何存储在 WorkerManager 中的任务都应该包含一个不基于会话的身份验证方法(因为此会话已关闭或过期),或者能够生成自己的会话。

    解释一下,Firebase 用户可以有多种与 account 相关联的身份验证方法,其中一种方法可以是基于设备的(例如使用 phone number authenticationGoogle Authentication)。

    documentation 一样,此登录信息可以由应用程序存储,以便它可以使用它们从后台任务自行登录。本质上是使用用户的凭据来启动新的登录。由于凭据与设备的登录用户一起存储,因此用于生成 Firebase 会话。

    另一个选项以类似的方式工作,但具有更固定的登录持续时间,即一旦通过 SMS 进行身份验证,此令牌将绑定到设备的电话号码,并可用于使用相同的凭据通过以下方式进行身份验证SafetyNet 用于Firebase Authentication

    【讨论】:

    • 目前我只使用手机验证,这需要用户输入发送的 otp。在这种情况下,我如何自行登录?我找不到与此相关的任何文档或代码 sn-p。如果你找到了,请给它链接。
    • 这个Send a verification code to the user's phone 能回答你的问题吗?
    • 不,我想知道如何从工作线程登录帐户。
    • 如果有帮助,您可以查看documentation 中的匿名身份验证!
    猜你喜欢
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2018-08-21
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多