我使用的是带有电子邮件和密码验证的firebase。用户成功登录后,我将收到一个包含令牌的AuthData对象。我想将这个令牌发送到我的后端,验证它并从中提取uid-不幸的是,我不知道如何做到这一点。我知道firebase的秘密,如果我去jwt.io,输入令牌和秘密签名被验证,我看到正确的有效载荷-所以这实际上是可行的。由于我在后端运行Java,所以我一直在使用 >用于解密过程,不幸的是它总是抛出一个 >:io.jsonwebtoken.signatureexception:JWT签名与本地计算的签名不匹配。无法断言JWT有效性,因此不应信任。遵循我一直使用的代码:SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;byte[] encodedKey = Base64.decode("my-firebase-secret", Base64.DEFAULT);Key k = new SecretKeySpec(encodedKey, signatureAlgorithm.getJcaName());Claims claims = Jwts.parser() .setSigningKey(k) .parseClaimsJws("the-token").getBody();我还尝试过以下片段:Claims claims = Jwts.parser() .setSigningKey(DatatypeConverter.parseBase64Binary("my-firebase-secret")) .parseClaimsJws(jwt).getBody();但也有同样的例外。我做错什么了?提前谢谢。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 是否尝试使用GetBytes而不是ParseBase64Binary?下面是一个例子:Claims claims = Jwts.parser().setSigningKey("my-firebase-secret".getBytes("UTF-8")).parseClaimsJws(jwt).getBody(); (adsbygoogle = window.adsbygoogle || []).push({});
10-07 19:35