我实现了 Firebase Phone Auth for SignIn在我的 ReactNative 项目中。现在我想用这个JWTToken传递给我对服务器进行的 API 调用。
在服务器端,我将验证通过 API 调用传递的 token 并以正确的响应进行响应。我的问题是,如何在对服务器进行的 API 调用中传递此 token ?
- 我可以将 token (在应用程序的第一个加载屏幕中,用于对用户进行身份验证)存储在 localStorage 中,并稍后在我的任何屏幕中获取它以进行 API 调用
- 我可以通过在每个屏幕中导入 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/