firebase - 存储和使用 Firebase 身份验证 token 对我的服务器进行 API 调用

标签 firebase react-native rest firebase-authentication

我实现了 Firebase Phone Auth for SignIn在我的 ReactNative 项目中。现在我想用这个JWTToken传递给我对服务器进行的 API 调用。

在服务器端,我将验证通过 API 调用传递的 token 并以正确的响应进行响应。我的问题是,如何在对服务器进行的 API 调用中传递此 token ?

  1. 我可以将 token (在应用程序的第一个加载屏幕中,用于对用户进行身份验证)存储在 localStorage 中,并稍后在我的任何屏幕中获取它以进行 API 调用
  2. 我可以通过在每个屏幕中导入 firebase 包(我计划从中进行 API 调用)来直接访问 token ,如下所示:https://rnfirebase.io/reference/auth/idtokenresult并将其传递到 API 调用中

但我正在考虑将 token (在加载屏幕期间获取)存储在我的 ReactNative 项目内的全局变量中,并且可以从任何屏幕访问。但我找不到如何做到这一点?或者哪种方式更合适?


编辑:

这就是我获取 token 的方式:

  auth().onIdTokenChanged(function(user) {
    if (user) {
      
      user.getIdToken().then( token => {
        console.log( token )
      });

    }
  });

最佳答案

从长远来看,将 token 存储在本地存储中并不适合您。 ID token 将在 1 小时后过期,之后将无法在服务器上成功验证。

每个单独的页面都应设置一个 ID token 监听器,以便可以使用 Firebase Auth SDK 提供的最新 token 。 SDK会自动刷新并在回调中为您提供最新的token。每次 token 更改时,您都应该在 API 调用中使用该值。使用onIdTokenChanged() :

firebase.auth().onIdTokenChanged(function(user) {
  if (user) {
    // User is signed in or token was refreshed.
  }
});

关于firebase - 存储和使用 Firebase 身份验证 token 对我的服务器进行 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62984272/

相关文章:

javascript - 如何解析 Angular 2中的 "_this is undefined"

android - React Native 应用程序崩溃 : Unable to load script from assets 'index.android.bundle'

python - 使用 Python 来 PUT PMML

使用 onAuthStateChanged 使用 Flutter 登录 Firebase

Android Firebase 测试实验室 - 使用 Orchestrator 进行仪器测试,其目的是什么?

swift - 通过 Firebase Swift 显示和更新注释

ios - 如何在 View Controller 中使用 RCTRootView?

react-native - 在 React Native 中,使用 expo-location,iOS 中的 gps 位置刷新率太低

java - 在 Vert.x Web 路由器上的不存在路由上提供静态 webroot/index.html 数据

php - 保护 REST API 和 Slim 框架