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

使用App Store Connect API发送POST请求时持续遭遇METHOD_NOT_ALLOWED错误

解决App Store Connect API POST请求返回METHOD_NOT_ALLOWED的问题

结合你的情况,这个问题大概率是JWT Scope格式错误导致的,给你几个排查和修复方向:

1. 修正JWT Payload中的Scope格式

App Store Connect API的Scope不是用POST /v1/certificates这种路径+方法的格式,而是采用资源:操作的格式。比如创建证书对应的正确Scope是certificates:create,创建Profile是profiles:create。

你的JWT Payload应该修改为:

{
  "iss": "KEY ISSUER",
  "iat": Math.floor(Date.now() / 1000),
  "exp": Math.floor(Date.now() / 1000) + (60 * 10),
  "aud": "appstoreconnect-v1",
  "scope": [
    "certificates:create"
  ]
}

2. 确认请求头包含正确的Content-Type

POST请求必须携带Content-Type: application/json头,不管是用NodeJS还是curl,都要确保这个头存在。比如curl命令要加-H "Content-Type: application/json",NodeJS的请求配置里也要显式设置。

3. 验证请求URL和请求体格式

  • 确认请求URL是https://api.appstoreconnect.apple.com/v1/certificates,注意是复数形式,没有拼写错误;
  • 请求体的type字段必须和端点对应(这里是certificates),certificateType的枚举值要完全匹配(比如IOS_DISTRIBUTION是正确的);
  • csrContent要确保是完整的PEM格式,包括-----BEGIN CERTIFICATE REQUEST-----和-----END CERTIFICATE REQUEST-----,不要有多余的空白字符。

4. 测试用例参考

curl示例(修正后)

curl -X POST "https://api.appstoreconnect.apple.com/v1/certificates" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "data": {
      "type": "certificates",
      "attributes": {
        "certificateType": "IOS_DISTRIBUTION",
        "csrContent": "-----BEGIN CERTIFICATE REQUEST-----...-----END CERTIFICATE REQUEST-----"
      }
    }
  }'

NodeJS示例(用node-fetch)

const fetch = require('node-fetch');
const jwt = require('jsonwebtoken');
const fs = require('fs');

const privateKey = fs.readFileSync('path/to/your/private-key.p8', 'utf8');
const token = jwt.sign(
  {
    iss: 'KEY ISSUER',
    iat: Math.floor(Date.now() / 1000),
    exp: Math.floor(Date.now() / 1000) + 600,
    aud: 'appstoreconnect-v1',
    scope: ['certificates:create']
  },
  privateKey,
  {
    algorithm: 'ES256',
    header: {
      alg: 'ES256',
      kid: 'KEY ID',
      typ: 'JWT'
    }
  }
);

const requestBody = {
  data: {
    type: 'certificates',
    attributes: {
      certificateType: 'IOS_DISTRIBUTION',
      csrContent: "-----BEGIN CERTIFICATE REQUEST-----...-----END CERTIFICATE REQUEST-----"
    }
  }
};

fetch('https://api.appstoreconnect.apple.com/v1/certificates', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(requestBody)
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));

如果按照以上步骤修正后还是报错,可以检查你的API密钥是否有对应的权限(比如是否开启了Certificates相关的操作权限),或者尝试更换密钥重新生成JWT。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:37:32