【问题标题】:FireBase Rest with auth query param not working带有身份验证查询参数的 FireBase Rest 不起作用
【发布时间】:2016-12-31 05:31:57
【问题描述】:
   // 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=TOKEN GENERATOR IN JAVA CODE

我收到以下错误:

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

我做错了什么?

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

PS: 我正在使用的 firebase sdk 版本

com.google.firebase firebase-server-sdk 3.0.1

编辑:Firebase 文档存在不一致


FIREBASE GUIDE 文档说

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

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


FIREBASE REFERENCE 文档说

参数可以是您的 Firebase 应用的密钥,也可以是 身份验证令牌。见REST authentication documentation 了解详情。


所以指南和参考的说法不同。

需要帮助

【问题讨论】:

    标签: rest firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    来自 Firebase 支持团队

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

    正如您所指出的,您需要点击此链接才能制作 经过身份验证的 REST 请求。您应该使用 access_token 参数,传递从服务帐户派生的令牌私有 钥匙。这假设您的场景是“服务器到数据库”,因为您正在使用 服务帐号。

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

    $ 卷曲 "https://test-de98f.firebaseio.com/test.json?access_token=&auth_variable_override=%7B%22uid%22%3A%226LiF16Dm0hNB9XO61UR1KM5Jeun2%22%7D" {"1213314":{"alanisawesome":"艾伦·图灵"}}

    我确实了解您指出的文档需要 进行改进并将其提交给我们的文档团队,以便 可以适当地优先考虑。虽然,我不能分享任何 截至目前的时间表。

    希望这会有所帮助。如有更多问题或疑虑,请随时回复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 2015-01-10
      • 2021-12-20
      • 2017-06-02
      • 2021-10-05
      • 2017-02-28
      • 2020-12-15
      相关资源
      最近更新 更多