Я получаю возврат 401 / не авторизованный для моего JTW, используя PHP с API Apple App Store Connect.
Используя php 7.1.3, я пробовал различные библиотеки и сырой php (код ниже).Я почти уверен, что с заголовком и полезной нагрузкой все в порядке, и проблема в том, чтобы подписать их, используя файл закрытого ключа p8, который я скачал из Apple.Я четыре раза проверил файл «kid», «iss» и «private key».
// Create token header as a JSON string
$header = json_encode([
'typ' => 'JWT',
'alg' => 'ES256',
'kid' => '1234567980'
]);
// Create token payload as a JSON string
$payload = json_encode([
'iss' => '12345678-1234-1234-1234-123456789012',
'exp' => time()+60*10, // 20 minute max allowed
'aud' => 'appstoreconnect-v1'
]);
$base64UrlHeader = rtrim(strtr(base64_encode($header), '+/', '-_'), '=');
$base64UrlPayload = rtrim(strtr(base64_encode($payload), '+/', '-_'), '=');
$privateKey = openssl_pkey_get_private('file://'.resource_path('/assets/AppleKey_1234567980.p8'));
$signature = '';
openssl_sign("$base64UrlHeader.$base64UrlPayload", $signature, $privateKey, 'sha256');
// Encode Signature to Base64Url String
$base64UrlSignature = rtrim(strtr(base64_encode($signature), '+/', '-_'), '=');
// Create JWT
$jwt = "$base64UrlHeader.$base64UrlPayload.$base64UrlSignature";
Когда я отправляю это в Apple с помощью curl, я получаю 401 / Not Authorized с подробной информацией «Учетные данные для проверки подлинности отсутствуют или недействительны» иничего более конкретного.
Кто-нибудь использовал Apple App Store Connect API с PHP - поиск в Google не дал результатов, которые я могу найти.