# 获取上传凭证
接口应在服务器端调用,不可在前端(小程序、网页、APP等)直接调用,具体可参考接口调用指南。
接口英文名:getYploadSignature
通过本接口可以获取上传云函数签名header 。使用过程中如遇到问题,可在开放平台服务商专区发帖交流。
# 1. 调用方式
# HTTPS 调用
POST https://api.weixin.qq.com/tcb/getuploadsignature?access_token=ACCESS_TOKEN
# 云调用
- 本接口不支持云调用。
# 第三方调用
本接口支持第三方平台代商家调用。
该接口所属的权限集 id 为:49
服务商获得其中之一权限集授权后,可通过使用 authorizer_access_token 代商家进行调用,具体可查看 第三方调用 说明文档。
# 2. 请求参数
# 查询参数 Query String Parameters
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| access_token | string | 是 | 接口调用凭证,可使用 authorizer_access_token |
# 请求体 Request Payload
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| hashed_payload | string | 是 | 上传云函数POST数据的签名 |
# 3. 返回参数
# 返回体 Response Payload
| 参数名 | 类型 | 说明 |
|---|---|---|
| errcode | number | 错误码 |
| errmsg | string | 错误信息 |
| headers | string | 带签名headers |
# 4. 注意事项
# 签名算法
hashed_payload 参数生成算法 hashed_payload是上传云函数请求POST数据的签名。签名过程参考如下JavaScript代码片段:
const crypto = require('crypto')
let ZipFile = await fs.promises.readFile(filePath, 'base64')
let uploadBody = JSON.stringify({
'CodeSecret': 't44gXCQQdVCFcMWKrCsSwQ5uV94Op3HiqoZQ1H972pyMBfVgvnAeUGN2vm5Xx07\/'
'EnvId': 'test-env',
'FunctionName': 'funcName',
'Handler': 'index.main',
ZipFile
})
let hashed_payload = crypto.createHash('sha256').update(uploadBody).digest('hex').toLowerCase()
# 上传云函数接口
通过本接口可以上传云函数。为保护第三方平台代码安全,上传代码时需填写 CodeSecret 字段 。小程序取消授权后,小程序开发者须重新上传一次代码,才可下载云函数代码。
POST https://scf.tencentcloudapi.com
HEADER
SHA256Hex(POSTDATA)作为 hashed_payload 使用 获取上传凭证 返回的headers
请求值
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| CodeSecret | string | 是 | 代码保护密钥,填写getCodeSecret API获取到的密钥。 | |
| Handler | string | 是 | 函数处理方法名称,填写'index.main' | |
| FunctionName | string | 是 | 要修改的函数名称 | |
| ZipFile | string | 是 | 包含函数代码文件及其依赖项的 zip 格式文件,使用该接口时要求将 zip 文件的内容转成 base64 编码,最大支持20M | |
| EnvId | string | 是 | 函数所属命名空间 | |
| InstallDependency | string | FALSE 否 | 'TRUE' | 'FALSE' 是否自动安装依赖 |
注意:zipfile打包时,请直接选中所要打包的函数代码文件直接打包,请不要放入文件夹中对文件夹进行打包。
POST 数据示例
{
"Handler":"index.main",
"FunctionName":"test",
"ZipFile":"zipfile_content",
"EnvId":"env_test",
"InstallDependency":"TRUE"
}
返回值
返回的 JSON 数据包
| 属性 | 类型 | 说明 |
|---|---|---|
| RequestId | string | 请求id |
| Error | string | 错误信息 |
返回数据示例
{
"Response": {
"RequestId": "eac6b301-a322-493a-8e36-83b295459397"
}
}
示例代码
curl -d '{"Handler":"index.main","FunctionName":"test","ZipFile":"zipfile_content", "EnvId":"env_test", "InstallDependency":"TRUE"}' \
-H 'getUploadSignatureResp.headers' \
'https://scf.tencentcloudapi.com'
# 5. 代码示例
请求示例
{
"hashed_payload": "lowercase_sha256hex_payload"
}
返回示例
{
"errcode": 0,
"errmsg": "ok",
"headers": "Authorization:TC3-HMAC-SHA256 Credential=AKIDNS5S-8S5Y7dxxv8lOPYPqu7XqNM3XUTG6QUxv2B-zkIcRG0XziWdsvpzzzzzzz/2019-05-28/scf/tc3_request, SignedHeaders=content-type;host, Signature=096dad0a5a5563381458224f38c1b8f35c8e2d5a8451950e33e36fa856fe9cd2\r\nHost:scf.tencentcloudapi.com\r\nContent-Type:application/json\r\nX-TC-Action:UpdateFunctionCode\r\nX-TC-Timestamp:1559046811\r\nX-TC-Version:2018-04-16\r\nX-TC-Region:ap-shanghai\r\nX-TC-Token:TOKEN"
}
# 6. 错误码
以下是本接口的错误码列表,其他错误码可参考 通用错误码;调用接口遇到报错,可使用官方提供的 API 诊断工具 辅助定位和分析问题。
| 错误码 | 错误描述 | 解决方案 |
|---|---|---|
| -1000 | system error | 系统错误 |
| -1 | system error | 系统繁忙,此时请开发者稍候再试 |
| 0 | ok | ok |
| 40014 | invalid access_token | 不合法的 access_token ,请开发者认真比对 access_token 的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口 |
| 40101 | missing parameter | 缺少必填参数 |
| 41001 | access_token missing | 缺少 access_token 参数 |
| 42001 | access_token expired | access_token 超时,请检查 access_token 的有效期,请参考基础支持 - 获取 access_token 中,对 access_token 的详细机制说明 |
| 43002 | require POST method | 需要 POST 请求 |
# 7. 适用范围
本接口支持「第三方平台」账号类型代调用,权限集请参考「调用方式」部分。其他账号类型如无特殊说明,均不可调用。