将firebase server sdk凭据与REST API一起重用
在Firebase的旧版本中,我用Java编写的服务器应用程序将使用secret和JWT令牌生成器与我的后端进行身份验证。然后,在任何时候,我都可以调用将firebase server sdk凭据与REST API一起重用,firebase,firebase-authentication,Firebase,Firebase Authentication,在Firebase的旧版本中,我用Java编写的服务器应用程序将使用secret和JWT令牌生成器与我的后端进行身份验证。然后,在任何时候,我都可以调用Firebase.getAuth().getToken(),并在HTTP调用中重用该令牌作为auth参数 使用新的firebase server sdk,我将如何在REST API中重用有限的服务帐户凭据/令牌 Map<String, Object> auth = new HashMap<String, Object>()
Firebase.getAuth().getToken()
,并在HTTP调用中重用该令牌作为auth
参数
使用新的firebase server sdk
,我将如何在REST API中重用有限的服务帐户凭据/令牌
Map<String, Object> auth = new HashMap<String, Object>();
auth.put("uid", "server-app");
FirebaseOptions options = new FirebaseOptions.Builder()
.setDatabaseUrl(Environment.FIREBASE_URL)
.setServiceAccount(MyClass.class.getResourceAsStream("/keys/dev.json"))
.setDatabaseAuthVariableOverride(auth)
.build();
FirebaseApp.initializeApp(options);
我已尝试添加access\u令牌
和auth
参数。似乎createCustomToken
方法生成了一个有效的JWT,但RESTAPI没有响应
当我传入该createCustomToken
返回值作为auth
参数时,我得到以下消息:
"error" : "Missing claim 'kid' in auth header."
当我传入该createCustomToken
返回值作为access_token
param时,我得到了基本的权限拒绝
API响应
有没有一种简单的方法可以在REST API调用中重用我现有的
firebase server sdk
凭据?您尝试使用的令牌是firebase身份验证ID令牌-设计用于在客户端上传递给firebase sdk的类型。RESTAPI接受Firebase访问令牌(就像以前Firebase客户端中的令牌一样)
您的身份验证失败,因为Firebase SDK通常负责将您的ID令牌转换为访问令牌。您的服务器无法使用Firebase SDK执行此转换或生成访问令牌,因此我建议使用原始Firebase密钥为REST API创建访问令牌。即使对于自I/O发布以来创建的新Firebase项目,这也可以正常工作
注意:在控制台中,您的数据库密码可以在(Gear图标)>项目设置>数据库下找到。您尝试使用的令牌是Firebase身份验证ID令牌-设计用于在客户端上传递给Firebase SDK的类型。RESTAPI接受Firebase访问令牌(就像以前Firebase客户端中的令牌一样) 您的身份验证失败,因为Firebase SDK通常负责将您的ID令牌转换为访问令牌。您的服务器无法使用Firebase SDK执行此转换或生成访问令牌,因此我建议使用原始Firebase密钥为REST API创建访问令牌。即使对于自I/O发布以来创建的新Firebase项目,这也可以正常工作
注意:在控制台中,您的数据库机密可以在(齿轮图标)>项目设置>数据库下找到。鉴于未记录属性的名称,我肯定不建议这样做,但是
如果您的SDK已使用serviceAccount登录,则可以使用
firebase.auth().INTERNAL.getToken()
,它返回一个承诺的accessToken
(和expirationTime
),然后与?access\u token
参数一起使用。鉴于未记录属性的名称,我确信不建议这样做,但是
如果您的SDK已使用serviceAccount登录,则可以使用
firebase.auth().INTERNAL.getToken()
,它将返回承诺的accessToken
(和expirationTime
)然后它与?access_token
参数一起工作。我应该添加这是针对node.js SDK的。我应该添加这是针对node.js SDK的。Abe,由于现在不推荐使用数据库机密,您对此有更新吗?Abe,由于现在不推荐使用数据库机密,您对此有更新吗?
"error" : "Missing claim 'kid' in auth header."