我使用Transloadit API来合并音频文件和一系列图像。
在某些时候,我需要检索程序集列表(视频生成到现在),其中transloadit提供了一个get API端点,但该端点接受两个查询字符串,签名和参数(配置列表)
我正在生成相同参数的签名,该参数作为查询字符串连同签名一起发送到API,但它返回签名不匹配的错误。
Transloadit有关于如何为每种主要语言创建签名的适当文档https://transloadit.com/docs/#signature-authentication
文档(https://transloadit.com/docs/api/#assemblies-get)也没有说明签名是否会由相同的参数生成。
如果有人在使用transloadit之前遇到过同样的问题,现在解决了,请帮助
我相信您的问题可能是您在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}¶ms={params_encoded}'
response = requests.get(url)