【问题标题】:Firebase Rest API Authentication ID Token and Token Refresh in React NativeReact Native 中的 Firebase Rest API 身份验证 ID 令牌和令牌刷新
【发布时间】:2019-12-08 18:04:57
【问题描述】:

Firebase 官方文档说用户的 Firebase 令牌 ID 在 1 小时内过期。生成一个新的令牌刷新令牌 id 将被传递到一个端点,作为响应,客户端接收新的令牌 id。

所以问题是,当用户数小时未在前台使用应用程序时,要在我的 react 本机应用程序中保持持久的登录行为,我是否必须启动一个后台服务,每隔一小时刷新一次 Firebase 令牌 ID?或者他们是一种更好、更简单的方法来保持用户的 firebase 令牌 ID 刷新并保持用户登录。

【问题讨论】:

    标签: firebase react-native firebase-authentication firebase-admin


    【解决方案1】:

    Firebase 身份验证状态持久性(推荐)

    Firebase Web API 为 Authentication State Persistence 提供以下选项:

    • local:表示即使在 React Native 中关闭浏览器窗口或销毁 Activity 时,状态也会保持不变。需要显式注销才能清除该状态。请注意,Firebase 身份验证网络会话是单一主机来源的,并且仅针对单个域进行持久化。
    • session:表示状态只会在当前session或tab中持续存在,当用户认证的tab或窗口关闭时会被清除。仅适用于网络应用。
    • none:表示状态只会存储在内存中,会在窗口或Activity刷新时被清除。

    直接使用 Firebase 状态持久性 API 是迄今为止最直接的解决方案。

    但是,如果您打算使用 Firebase Admin SDK 从头开始​​实现状态持久性,那么您可以执行以下操作。

    自定义状态持久性(不推荐)

    1. 用户登录。
    2. 服务器生成的 Firebase 用户 ID 和秘密令牌保存在存储中,例如 React Native AsyncStorage。秘密令牌也存储在数据库中。
    3. 在应用运行时,会定期检索刷新令牌以保持会话有效。
    4. 用户关闭应用程序。
    5. 用户打开应用程序。
    6. 应用检查 Firebase 用户 ID 和秘密令牌的存储。如果找到,这些将被发送到服务器以确认密码是否与存储在数据库中的代码匹配。
    7. 如果密码匹配,则服务器会根据 Firebase 用户 ID 生成自定义身份验证令牌,并将其发送回 React Native 应用。
    8. React Native 应用会使用自定义身份验证令牌自动登录用户。

    【讨论】:

    • 感谢清理。关于您的第 3 点的另一个问题。所以根据这一点3,在使用应用程序时,令牌会自动刷新吗?我认为我们需要手动刷新它们
    • 什么是密码?我只听说过 firebase token id 和 firebase refresh token id
    • 在第 3 步中,由您的应用请求刷新令牌(按照您的说明手动操作)。密码只是您的服务器将生成的随机数。如果您实施自定义解决方案,您可能需要设置到期日期,以便用户必须在几天后重新登录。
    【解决方案2】:

    使用react-native-firebase 库。

    【讨论】:

      猜你喜欢
      • 2020-08-05
      • 2014-02-25
      • 2021-02-18
      • 2019-02-27
      • 2017-11-08
      • 2020-07-07
      • 2022-09-28
      • 2018-11-24
      • 1970-01-01
      相关资源
      最近更新 更多