# 获取上传凭证

调试诊断

接口应在服务器端调用,不可在前端(小程序、网页、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_tokenstring接口调用凭证,可使用 authorizer_access_token

# 请求体 Request Payload

参数名类型必填说明
hashed_payloadstring上传云函数POST数据的签名

# 3. 返回参数

# 返回体 Response Payload

参数名类型说明
errcodenumber错误码
errmsgstring错误信息
headersstring带签名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 诊断工具 辅助定位和分析问题。

错误码错误描述解决方案
-1000system error系统错误
-1system error系统繁忙,此时请开发者稍候再试
0okok
40014invalid access_token不合法的 access_token ,请开发者认真比对 access_token 的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口
40101missing parameter缺少必填参数
41001access_token missing缺少 access_token 参数
42001access_token expiredaccess_token 超时,请检查 access_token 的有效期,请参考基础支持 - 获取 access_token 中,对 access_token 的详细机制说明
43002require POST method需要 POST 请求

# 7. 适用范围

本接口支持「第三方平台」账号类型代调用,权限集请参考「调用方式」部分。其他账号类型如无特殊说明,均不可调用。