Obtaining/using Firebase 智威汤逊
Obtaining/using Firebase JWT
早期使用 Firebase 文档,到目前为止非常喜欢它。作为 n00b,这里有一个概念性问题 - Firebase 身份验证生成的 (JWT) 令牌是否可在客户端访问?
我想调用一些 外部 服务并希望利用 JWT 作为安全机制。所以:
- 使用 Firebase 内置提供程序(纯客户端)验证用户
- 获取 Firebase JWT(我的问题)
- 将此 JWT as/whenever 传递给外部服务并验证它(使用我的应用程序 FBase 密码)"access" 给外部服务
本质上,利用现有的 Firebase 机制作为 "gateway" 外部服务的一种形式。
我在这里看到了一个 old answer - "。...页面重新加载后仍然存在的令牌,然后您需要以某种方式存储它,以便客户端..."=30 =] - 这是 token
还是 JWT
?
谢谢!
Firebase 确实将 JWT 保存在本地存储中。
JSON.parse(localStorage.getItem("firebase:session::<app-name>")).token
您也可以从 authData 中获取它,它可用作 token
属性.
的值
ref.onAuth(function(authData) { console.log(authData.token); })
但首选方法是按照 Chris 在评论中所说的进行操作:
ref.getAuth().token
这是获取firebase JWT token的正确方式
firebase.auth().currentUser.getToken().then(function(token){
console.log(token);
});
对于希望在 Swift 4 中执行此操作的任何未来 SO-goers,这里有一个片段可以让您的生活更轻松:
// 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
}
})
2020 年 11 月的答案
拥有 FirebaseAuth 实例后,您可以使用一行代码获取令牌:
FirebaseAuth auth;
String token;
token = await auth.currentUser.getIdToken();
2021 年 3 月更新:
getToken()
不行,参考documentation
我们必须使用 getIdToken()
以下版本将在 Javascript
中运行
firebase.auth().currentUser.getIdToken(true).then(function(token){
console.log(token);
});
早期使用 Firebase 文档,到目前为止非常喜欢它。作为 n00b,这里有一个概念性问题 - Firebase 身份验证生成的 (JWT) 令牌是否可在客户端访问?
我想调用一些 外部 服务并希望利用 JWT 作为安全机制。所以:
- 使用 Firebase 内置提供程序(纯客户端)验证用户
- 获取 Firebase JWT(我的问题)
- 将此 JWT as/whenever 传递给外部服务并验证它(使用我的应用程序 FBase 密码)"access" 给外部服务
本质上,利用现有的 Firebase 机制作为 "gateway" 外部服务的一种形式。
我在这里看到了一个 old answer - "。...页面重新加载后仍然存在的令牌,然后您需要以某种方式存储它,以便客户端..."=30 =] - 这是 token
还是 JWT
?
谢谢!
Firebase 确实将 JWT 保存在本地存储中。
JSON.parse(localStorage.getItem("firebase:session::<app-name>")).token
您也可以从 authData 中获取它,它可用作 token
属性.
ref.onAuth(function(authData) { console.log(authData.token); })
但首选方法是按照 Chris 在评论中所说的进行操作:
ref.getAuth().token
这是获取firebase JWT token的正确方式
firebase.auth().currentUser.getToken().then(function(token){
console.log(token);
});
对于希望在 Swift 4 中执行此操作的任何未来 SO-goers,这里有一个片段可以让您的生活更轻松:
// 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
}
})
2020 年 11 月的答案
拥有 FirebaseAuth 实例后,您可以使用一行代码获取令牌:
FirebaseAuth auth;
String token;
token = await auth.currentUser.getIdToken();
2021 年 3 月更新:
getToken()
不行,参考documentation
我们必须使用 getIdToken()
以下版本将在 Javascript
中运行firebase.auth().currentUser.getIdToken(true).then(function(token){
console.log(token);
});