从Web SDK访问Firebase自定义令牌声明

时间:2017-04-10 17:10:49

标签: firebase firebase-authentication

如果我有一个包含某些声明的自定义令牌并且我使用它登录Firebase,是否有办法使用Web SDK从应用内部访问这些声明?

例如,如果我的自定义令牌是这样的

{
 :iss => $service_account_email,
 :sub => $service_account_email,
 :aud => "https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit",
 :iat => now_seconds,
 :exp => now_seconds+(60*60), # Maximum expiration time is one hour
 :uid => uid,
 :claims => {:premium_account => is_premium_account}
}

我想知道是否有类似的内容(来自应用内部):

firebase.auth.token.claims.premium_account

我在文档中找不到这样的内容。

3 个答案:

答案 0 :(得分:3)

您似乎想getIdTokenResult

await firebase.auth().currentUser.getIdTokenResult()

答案 1 :(得分:0)

claims嵌入在令牌中。

以下是使用网络客户端上的jwt-decode从令牌中提取声明的示例代码:

import jwt_decode from './jwt-decode';

firebase.auth().currentUser.getToken().then((token) => {
    console.log(token);
    console.log(jwt_decode(token));
});

答案 2 :(得分:0)

以下是相关文档:https://firebase.google.com/docs/auth/admin/custom-claims

我认为它的要点是,一旦你通过后端代码(admin sdk或firebase函数)附加到用户的自定义声明,你可以base64解码currentUser标记。 该文档引用了关于javascript base64解码的mozilla文章:https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

您可以JSON.parse已解码的令牌,您的自定义声明将显示在那里。文档非常好。