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

Firebase PHP-JWT v6.10自定义Header编码报错问题求助

解决firebase/php-jwt 6.x版本中JWT::encode添加kid头部的错误

你遇到的错误是因为firebase/php-jwt 6.x版本的JWT::encode方法参数定义和你使用的方式不匹配。该方法的第三个参数要求是字符串类型的算法名称,而你传入了数组类型的header,导致类型错误。

方法一:直接通过参数传递kid(推荐)

6.x版本的encode方法提供了专门的$keyId参数(第四个参数)来设置header中的kid,无需手动构造完整header数组:

// 正确调用方式,第四个参数传入kid
$jwt = JWT::encode($payload, new Key($key, 'HS256'), 'HS256', $kid);

这种方式会自动将kid添加到JWT头部,同时默认生成alg和typ字段,无需手动定义。

方法二:自定义完整header数组

如果需要自定义更多头部字段(除了alg、typ、kid),可以使用第五个参数$header,但需要补全前面的参数:

// 确保header中的alg和使用的算法一致
$header = [
    'alg' => 'HS256',
    'typ' => 'JWT',
    'kid' => $kid
];

// 调用时补全前四个参数,第五个传入自定义header
$jwt = JWT::encode($payload, new Key($key, 'HS256'), 'HS256', null, $header);

注意:如果自定义header,alg必须和你使用的加密算法一致,否则会导致JWT验证失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 15:13:10