获取/使用Firebase JWT

ukxgm1gy  于 2023-03-13  发布在  其他
关注(0)|答案(5)|浏览(164)

早期的Firebase文档,到目前为止非常喜欢它。作为n 00 b,这里有一个概念性的问题--由Firebase身份验证生成的(JWT)令牌是否可以在客户端访问?
我希望调用一些 * 外部 * 服务,并希望利用JWT作为安全机制。

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

本质上,利用现有的Firebase机制作为外部服务的“网关”。
我在这里看到了一个old answer- "....token以在页面重新加载后继续存在,然后您需要以某种方式存储它,以便客户端..." -这是token吗?
谢谢!

9q78igpj

9q78igpj1#

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

firebase.auth().currentUser.getToken().then(function(token){
  console.log(token);
});
cqoc49vn

cqoc49vn2#

2021年3月更新:getToken()无法工作,请参阅文档
我们必须使用getIdToken()
下面的版本将在Javascript中工作

firebase.auth().currentUser.getIdToken(true).then(function(token){
  console.log(token);
});
plicqrtu

plicqrtu3#

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

JSON.parse(localStorage.getItem("firebase:session::<app-name>")).token

您也可以从authData获取它,在authData中它作为token属性的值提供。

ref.onAuth(function(authData) { console.log(authData.token); })

但首选的方式是按照克里斯在评论中说的去做:

ref.getAuth().token
bkhjykvo

bkhjykvo4#

对于任何希望在Swift 4中实现这一点的未来SO用户,这里有一个片段可以让你的生活更轻松:

// Force refresh from Firebase if token is expired (pass true) 
        // or deliberately do not refresh if expired (pass false)

        Auth.auth().currentUser?.getIDTokenForcingRefresh(true, completion: { (token, error) in
            if error != nil {
                print("Network Auth Error: \(String(describing: error?.localizedDescription)))")

            } else {
                // do something with token
            }
        })

        // If you don't care about the refresh
        Auth.auth().currentUser?.getIDToken(completion: { (token, error) in
            if error != nil {
                print("Network Auth Error: \(String(describing: error?.localizedDescription)))")

            } else {
                // do something with token
            }
        })
epggiuax

epggiuax5#

2020年11月答复

拥有FirebaseAuth示例后,您可以使用一行代码获取令牌:

FirebaseAuth auth;
String token;

token = await auth.currentUser.getIdToken();

相关问题