yikart/AiToEarn · error · Error

获取上传参数失败,失败原因:

Error message

获取上传参数失败,失败原因:

What it means

getPublishUploadParams fetches COS/Tencent-cloud upload credentials from the Shipinhao backend. A non-zero errCode in the response causes this throw with the server errMsg appended. Without these params (UploadID flow params), the subsequent video upload cannot proceed.

Solutions

  1. Inspect the appended errMsg to identify the server reason.
  2. Re-login to refresh cookies and obtain a fresh traceKey before requesting upload params.
  3. Confirm all request fields match the current Shipinhao API contract.
  4. Check account publish permissions / risk-control status in the WeChat Channels app.

Example fix

null
Defensive patterns

Strategy: try-catch

Validate before calling

// ensure a fresh traceKey exists before requesting upload params
if (!traceKey) throw new Error('traceKey required before uploadParams');

Type guard

function hasUploadParams(res: { errCode: number; data?: any }): res is { errCode: 0; data: Record<string, unknown> } {
  return res.errCode === 0 && res.data != null;
}

Try / catch

try {
  const params = await service.uploadParams(cookie, traceKey, proxy);
} catch (e) {
  const reason = e.message.replace('获取上传参数失败,失败原因:', '');
  console.error('uploadParams rejected:', reason);
  // refresh cookies/traceKey and retry once
}

Prevention

When it happens

Trigger: Calling getPublishUploadParams / uploadParams when the server returns errCode != 0 — typically invalid cookies, expired session, risk control, or wrong/missing request parameters (traceKey, title, etc.).

Common situations: Expired WeChat login cookies, publish params constructed from a stale traceKey, Shipinhao API changes, or network path through an unstable proxy causing session rejection.

Related errors


AI-assisted analysis of yikart/AiToEarn@d3aa8bea5b (2026-08-31). Data as JSON: /api/errors/c970c0c33ce24529. Report an issue: GitHub.

Appendix: source

Thrown at project/aitoearn-electron/electron/plat/shipinhao/index.ts:629

      scene: 7,
    };

    const res = await this.makeRequest(
      this.getPublishUploadParamsUrl,
      {
        method: 'POST',
        headers: {
          Cookie: cookieString,
        },
        body: requestParams,
      },
      proxy,
    );

    if (res.errCode === 0) {
      return res.data;
    } else {
      throw new Error('获取上传参数失败,失败原因:' + (res.errMsg ?? '未知'));
    }
  }

  /**
   * 上传视频文件
   * @param filePath
   * @param uploadParams
   * @param filePartInfo
   * @param proxy
   */
  private async uploadVideoFile(
    filePath: string,
    uploadParams: any,
    filePartInfo: any,
    proxy: string,
  ): Promise<string> {
    try {
      // 拼接请求参数

View on GitHub (pinned to d3aa8bea5b)