我正在尝试使用 PHP通过 ES256 签名的 JWT(根据他们在https://developer.apple.com/documentation/appstoreconnectapi 上的说明)对 Apple 的 AppStoreConnect API 进行身份验证。
发送我的请求总是会导致401 NOT_AUTHORIZED错误。
我已经验证了我的标题和声明的内容是正确的 - 我什至在网上找到了一个 Ruby 脚本来生成一个 ES256 签名的 JWT 并使用我的 Apple 提供的颁发者、密钥 ID、私钥,它运行良好 - Apple 接受令牌. 这告诉我我的凭据很好,但我在 php 中做错了。
除非我只是盯着这段代码看太久,否则 JWT 格式是正确的,base64 编码正确,并且不记名令牌在标头中设置正确。
为了排除请求发送的问题,我尝试了 GuzzleHTTP 和 CLI cURL - 都是 401。
这是相关的代码。您将看到该create方法正在对标头和声明进行编码、签署“有效负载”并连接所有 3 个。
public function create()
{
$header = $this->encode(
json_encode([
'kid' => 'my_key_id',
'alg' => 'ES256',
'typ' => 'JWT',
])
);
$claims = $this->encode(
json_encode([
'iss' => 'my_issuer_uuid',
'exp' => …Run Code Online (Sandbox Code Playgroud)