繁体   English   中英

具有身份验证查询参数的FireBase Rest无法正常工作

[英]FireBase Rest with auth query param not working

   // INIT FIREBASE
    FirebaseOptions options = new FirebaseOptions.Builder()
          .setServiceAccount(new FileInputStream("C:\\path\\testcustom-dff2147d3b14.json"))
          .setDatabaseUrl("https://testcustom-a1a4d.firebaseio.com/")
          .build();
        FirebaseApp.initializeApp(options);
        isFireBaseInit = true;

       // GENERATE TOKEN
        String uid = "USER ID SOME RANDOM";
        HashMap<String, Object> additionalClaims = new HashMap<String, Object>();
        String token = FirebaseAuth.getInstance().createCustomToken(uid, additionalClaims);

如果我尝试使用Rest API获取数据,则不是从浏览器

https://testcustom-a1a4d.firebaseio.com/1719126/1719130/1719121.json?auth=JAVA代码中的代币生成器

我收到以下错误:

{
  "error" : "Missing claim 'kid' in auth header."
}

我究竟做错了什么?

自定义令牌是否不适用于rest api。 我是否需要使用firebase链接 ,如果是,如何在其中添加其他声明?

PS:我正在使用的Firebase SDK版本

com.google.firebase firebase-server-sdk 3.0.1

编辑:FIREBASE文档中存在不一致


FIREBASE 指南文档说明

参数可以是您的Firebase应用程序的机密,也可以是身份验证令牌,如“ Firebase项目中的用户”中所述

描述的身份验证类型为https://firebase.google.com/docs/auth/users#auth_tokens
注意:那里存在自定义令牌


FIREBASE 参考文档说明

该参数可以是Firebase应用程序的机密,也可以是身份验证令牌。 有关详细信息,请参见REST身份验证文档


因此,指南和参考的讨论方式有所不同。

请帮忙

来自Firebase支持团队

是的,使用FirebaseAuth.getInstance()。createCustomToken(uid,extraClaims)创建自定义令牌不适用于REST API。 这些令牌旨在由具有signInWithCustomToken(token)的客户端SDK使用。 请注意,由于新Firebase(旧版Firebase支持)中安全模型的更改,目前不支持“客户端到数据库” REST请求。

如您所指出的,您需要单击此链接才能发出经过身份验证的REST请求。 您应该使用access_token参数,传递从服务帐户私钥派生的令牌。 假设您使用服务帐户时的情况是“服务器到数据库”。

要使用REST添加自定义声明,应使用auth_variable_override参数。 看这里。 您的请求现在应该看起来像这样,并带有附加的声明:{“ uid”:“ 6LiF16Dm0hNB9XO61UR1KM5Jeun2”}

$ curl“ https://test-de98f.firebaseio.com/test.json?access_token=&auth_variable_override =%7B%22uid%22%3A%226LiF16Dm0hNB9XO61UR1KM5Jeun2%22%7D” {“ 1213314”:{“ alanisawesome”:“ Alan图灵“}}

我确实知道您所指出的文档有待改进,并将其提交给我们的文档团队,以便可以对其进行优先排序。 不过,目前我无法分享任何时间表。

希望这可以帮助。 如有其他问题或疑虑,请随时回应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM