You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java后端如何获取Firebase Auth的JWT Token(类NodeJS的getIdToken)

在Java中获取Firebase用户JWT Token的解决方案

首先要明确:Node.js里的getIdToken(true)是客户端SDK的方法,用于获取当前已登录用户的ID Token;而你使用的firebase-admin是服务端SDK,服务端本身不会直接生成用户的ID Token——因为ID Token是Firebase Auth服务颁发给客户端的短期凭证。

不过有两种可行方案实现类似需求:

方案一:通过自定义Token换取ID Token

服务端先生成自定义Token,再调用Firebase Auth的REST API换取对应的ID Token:

  1. 生成自定义Token
    使用firebase-admin生成对应用户的自定义Token:

    String customToken = FirebaseAuth.getInstance().createCustomToken(uid);
    
  2. 调用REST API换取ID Token
    向https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken发送POST请求,参数如下:

    • 请求体(JSON格式):
      {
        "token": "生成的自定义Token内容",
        "returnSecureToken": true
      }
      
    • 请求URL需携带你的Web API密钥(可在Firebase控制台→项目设置→通用→Web API密钥中获取)

    Java中用HttpClient实现的示例代码:

    HttpClient client = HttpClient.newHttpClient();
    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=你的WebAPI密钥"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString("{\"token\":\"" + customToken + "\",\"returnSecureToken\":true}"))
            .build();
    
    HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
    // 解析响应体提取idToken
    String idToken = new JSONObject(response.body()).getString("idToken");
    

方案二:用刷新Token换取新ID Token(若客户端已提供刷新Token)

如果客户端之前获取过刷新Token,服务端可以直接用它换取新的ID Token:
向https://securetoken.googleapis.com/v1/token发送POST请求,参数包括:

  • grant_type: refresh_token
  • refresh_token: 客户端提供的刷新Token
  • key: 你的Web API密钥

解析响应中的id_token字段即可得到目标JWT,代码实现逻辑与方案一类似。

注意事项

  • ID Token默认有效期1小时,属于短期凭证,建议按需生成不要长期存储
  • 生成自定义Token时,uid必须是Firebase Auth中已存在的用户ID
  • Web API密钥需妥善保管,避免泄露

内容的提问来源于stack exchange,提问作者ishallwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:33:59