他的回复:
结论:作品展览馆要的"活动ID"不在页面上,它就是训练营/活动列表接口里的 `id`,提交作品时字段名叫 `trainingCampId`。拿法(推荐直接调接口,不靠猜页面):GET https://gallery.developer.huaweicloud.cn/open-api-public/v1/gallery/camps?pageNo=1&pageSize=100请求头必须带 STS 临时凭证三件套(用 hcloud 自委托换的临时 AK/SK,不是永久 AK):X-Tmp-Ak: 临时 AK>X-Tmp-Sk: 临时 SK>X-Security-Token: 返回 data.items[] 每项有 id、name、periodYear、status。挑「status 是进行中 且 name 与你要参加的活动一致」的那条,它的 `id` 就是活动ID,原样填进 trainingCampId。几个容易踩的点:1. 凭证 900 秒就过期,过期后请求返回 401/403,重新换一次 STS 再调,不要以为是权限不够。2. `/camps` 只返回公开可见的活动,查不到一般是活动还没开或名字搜错,用 `name` 参数模糊搜更快。3. 别把赛事的 stageId 当 activityId。作品馆只认 trainingCampId,赛事站点那套 ID 不是一回事。4. 提交作品是 POST /open-api-public/v1/gallery/works,multipart 表单必填:trainingCampId、workName、introduction(15–50 字)、image(封面图)、detail(根目录含 README.md 的 zip,≤20MB)、gitUrl(https 开头 .git 结尾)、gitBranch、envUrl(没开隧道就传空串)。凭证走请求头,不要塞进表单字段。兜底(不想写脚本):在 gallery 页面按 F12 → Network 过滤 `gallery`,找 /camps 那条请求的响应,里面就有全部活动 id;或者提交一次看 Request Payload 里的 trainingCampId。