为了账号安全,请及时绑定邮箱和手机立即绑定

使用 PHP 进行 Web 推送的 JWT 签名

使用 PHP 进行 Web 推送的 JWT 签名

PHP
30秒到达战场 2023-11-03 17:34:14
我正在尝试使用 PHP 发送网络推送通知。我已经阅读了有关如何实现网络推送协议的信息,例如此处。但是,我认为我并没有真正理解本指南的作者解释如何形成授权标头的步骤。使用这个库并给定由在线生成器创建的 VAPID 密钥,我尝试了以下操作:use Lcobucci\JWT\Builder;use Lcobucci\JWT\Signer\Key;use Lcobucci\JWT\Signer\Ecdsa\Sha256;$signer = new Sha256();$privateKey = new Key('<the generated private VAPID key>');$time = time();$token = (new Builder())->permittedFor('https://example.com')                        ->expiresAt($time + 3600)                        ->withHeader('alg', 'ES256')                        ->withClaim('sub', 'mailto:someone@example.com')                        ->getToken($signer, $privateKey);我想要得到的是类似于<JWT Info>.<JWT Data>.<Signature>out of 的东西$token。但是,我收到错误。致命错误:未捕获 InvalidArgumentException:无法解析您的密钥,原因:错误:0909006C:PEM ...有人知道我在这里做错了什么吗?预先非常感谢!
查看完整描述

1 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

在内部,Lcobucci/jwtAPI使用 openssl_pkey_get_private()openssl_pkey_get_public()函数。

根据文档,他们期望 PEM 编码的密钥,但这不是您提供的。这类键以--------BEGIN前缀开头。


查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 63 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信