1

我正在使用 Transloadit API 来合并音频文件和一系列图像。

在某些时候,我需要检索程序集列表(到目前为止生成的视频),transloadit 为其提供了一个 get API 端点,但该端点接受两个查询字符串、签名和参数(以配置列表)

我正在生成相同参数的签名,这些参数作为查询字符串连同它的签名一起发送到 API,但它返回一个签名不匹配的错误。

Transloadit 在https://transloadit.com/docs/#signature-authentication有关于如何为每种主要语言创建签名的适当文档

此外,文档(https://transloadit.com/docs/api/#assemblies-get)没有说明签名是否将由相同的参数生成。

如果有人使用过 transloadit 并且以前遇到过同样的问题并现在解决它,请提供帮助

4

1 回答 1

0

我相信您的问题可能是您在将 JSON 传递给 GET 请求之前没有对 JSON 进行 URL 编码。这是 Python 中的一个小片段,展示了如何将值字典转换为 JSON 以生成签名,然后转换为 GET 请求的 URL 编码对象。

params = {
    'auth': {
        'key': auth_key,
        'expires': expires
    },
    'template_id': template_id
}

# Converts the dictionary into JSON
message = json.dumps(params, separators=(',', ':'))
signature = hmac.new(auth_secret.encode('utf-8'),
                    message.encode('utf-8'),
                    hashlib.sha1).hexdigest()

# URL encodes it
params_encoded = urllib.parse.quote_plus(message)

url = f'https://api2.transloadit.com/assemblies?signature={signature}&params={params_encoded}'

response = requests.get(url)
于 2021-03-17T09:42:34.983 回答