2017-04-10 27 views
0

如果我拥有带有某些声明的自定义令牌,并且使用它登录Firebase,是否有任何方式使用Web SDK从应用内部访问这些声明?从Web SDK访问Firebase自定义令牌声明

例如,如果我的自定义标记是这样

{ 
: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 

我没有找到文档中的任何此类内容。

+1

http://stackoverflow.com/questions/39917020/where-to-find-auth-token-data-inside-firebase-objects – bojeil

+0

谢谢@bojeil。所以它看起来不能从sdk访问... – Bruno

回答

0

claims嵌入在令牌中。

这里是一个例子代码的Web客户端上使用jwt-decode提取从令牌的权利要求:

import jwt_decode from './jwt-decode'; 

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

这里是在其上的文档:https://firebase.google.com/docs/auth/admin/custom-claims

我认为它的要点,是一旦您通过后端代码(admin sdk或firebase函数)向用户附加了自定义声明,您可以base64解码当前用户令牌。 该文档参考了JavaScript base64解码的mozilla文章:https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

您可以JSON.parse解码的令牌,您的自定义声明将显示在那里。该文档相当不错。