获取/使用 Firebase JWT

EdS*_*dSF 3 firebase

早期使用 Firebase 文档并且到目前为止真的很喜欢它。作为 n00b,这里有一个概念性问题 - Firebase 身份验证生成的(JWT)令牌是否可访问客户端?

我希望调用一些外部服务并希望利用 JWT 作为安全机制。所以:

  • 使用 Firebase 内置提供程序(纯客户端)对用户进行身份验证
  • 获取 Firebase JWT(我的问题)
  • 在需要时将此 JWT 传递给外部服务并验证它(使用我的应用程序 FBase 秘密)以“访问”外部服务

本质上,利用现有的 Firebase 机制作为外部服务的“网关”形式。

我在这里看到了一个旧答案- “.... 重新加载页面的令牌,然后你需要以某种方式存储它,以便客户端......” - 这tokenJWT吗?

谢谢!

Fra*_*vid 6

2021 年 3 月更新: getToken()不起作用,请参阅文档

我们必须使用getIdToken()

以下版本适用于 Javascript

firebase.auth().currentUser.getIdToken(true).then(function(token){
  console.log(token);
});
Run Code Online (Sandbox Code Playgroud)


Ism*_*kin 5

这是获取 firebase JWT 令牌的正确方法

firebase.auth().currentUser.getToken().then(function(token){
  console.log(token);
});
Run Code Online (Sandbox Code Playgroud)

  • 截至 2017 年 3 月,这似乎是正确的方法,请参阅 https://firebase.google.com/docs/reference/js/firebase.User#getToken (2认同)

Fra*_*len 3

Firebase 确实将 JWT 保存在本地存储中。

JSON.parse(localStorage.getItem("firebase:session::<app-name>")).token
Run Code Online (Sandbox Code Playgroud)

您还可以从 authData 获取它,它可用作属性的值token

ref.onAuth(function(authData) { console.log(authData.token); })
Run Code Online (Sandbox Code Playgroud)

但首选方法是按照 Chris 在评论中所说的操作:

ref.getAuth().token
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用“ref.getAuth().token”获取它 (3认同)