【问题标题】:Cannot get JWT (json web token) to work with Apple App Store Connect API in PHP无法让 JWT(json Web 令牌)与 PHP 中的 Apple App Store Connect API 一起使用
【发布时间】:2019-10-11 13:03:33
【问题描述】:

我使用 PHP 和 Apple 的 App Store Connect API 获得了 401/未授权的 JTW 回报。

使用 php 7.1.3,我尝试了各种库和原始 php(代码如下)。我很确定标头和有效负载都很好,问题是使用我从 Apple 下载的 p8 私钥文件对其进行签名。我已经四次检查了孩子、ISS 和私钥文件。

        // 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";

当我通过 curl 将其提交给 Apple 时,我得到一个 401/未授权的详细信息“身份验证凭据丢失或无效”,没有更具体的信息。

有没有人在 PHP 中使用过 Apple 的 App Store Connect API - 谷歌搜索很少,我找不到任何结果。

【问题讨论】:

    标签: app-store-connect


    【解决方案1】:

    您可以检查此解决方案。我设法获得身份验证并从appleconnect获取数据。 https://stackoverflow.com/a/57150060/860353

    【讨论】:

      猜你喜欢
      • 2021-03-18
      • 2020-05-10
      • 2019-06-14
      • 2023-02-24
      • 2015-02-05
      • 2016-02-07
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      相关资源
      最近更新 更多