无法通过App Store Connect API获取订阅报告(报400错误)
解决App Store Connect API订阅报告400错误问题
可能的问题点及修复方案
1. 移除多余的请求头
你的请求使用GET方法,却设置了Content-Type: application/json,这个头对GET请求完全不必要,苹果API可能会因此返回400错误。直接移除该头:
修正后的请求头代码:
headers = { 'Authorization': f'Bearer {gen_jwt}', }
2. 修正参数组合的合法性
SUBSCRIPTION_EVENT类型报告对参数搭配有严格要求,需确保符合苹果规范:
- 当
reportType=SUBSCRIPTION_EVENT时,reportSubType只能是DETAILED,SUMMARY仅适用于销售类报告 - 确认
reportDate满足延迟要求:订阅事件的日度报告通常需要1-2天的生成时间,不能请求当天或昨日的日期(比如2023-05-01需确保苹果已生成该日期的报告)
修正后的参数代码:
params = { 'filter[frequency]': 'DAILY', 'filter[reportType]': 'SUBSCRIPTION_EVENT', 'filter[reportSubType]': 'DETAILED', 'filter[reportDate]': '2023-04-30' }
3. 验证API密钥权限
虽然你能获取销售报告,但订阅事件报告需要额外权限:确认你的API密钥在App Store Connect中被分配了Sales and Reports权限,且关联用户角色拥有查看订阅数据的权限。
4. 查看具体错误信息
如果以上调整后仍报错,打印response.text获取苹果返回的详细错误提示,通常会明确指出参数不合法、权限不足等具体问题,再针对性排查。
测试修正后的完整代码
import requests import datetime import json import gzip gen_jwt = "你的JWT令牌" # 替换为实际生成的JWT api_endpoint = 'https://api.appstoreconnect.apple.com/v1/salesReports' headers = { 'Authorization': f'Bearer {gen_jwt}', } params = { 'filter[frequency]': 'DAILY', 'filter[reportType]': 'SUBSCRIPTION_EVENT', 'filter[reportSubType]': 'DETAILED', 'filter[reportDate]': '2023-04-30' } response = requests.get(api_endpoint, headers=headers, params=params) print(response.status_code) print(response.text)
内容的提问来源于stack exchange,提问作者Havoud
相关产品推荐
相关产品推荐

