Cloudinary 错误:“错误”:“消息”:“缺少必需的参数 - 时间戳”
Posted
技术标签:
【中文标题】Cloudinary 错误:“错误”:“消息”:“缺少必需的参数 - 时间戳”【英文标题】:Cloudinary Error: "error":"message":"Missing required parameter - timestamp"Cloudinary 错误:“错误”:“消息”:“缺少必需的参数 - 时间戳” 【发布时间】:2022-01-10 07:25:00 【问题描述】:我正在尝试使用 Cloudinary 的 .downloadMulti(String tag, Map options)
生成一个 URL,以将多个图像下载为具有相同标签的 zip。我生成的 URL 似乎很好,但是当我转到 URL 时,我遇到了 "error":"message":"Missing required parameter - timestamp"。
我进行了一些研究,发现我需要签署请求,但这并不是说我错过了 - 只是时间戳。我相信请求已经被签署,只需要一个适当的时间戳。我相信它需要在构造函数中,但是当我调用 Util.timestamp()
时,它不会被识别为参考。
我的 Cloudinary 初始化器:
private final Cloudinary cloudinary = new Cloudinary(ObjectUtils.asMap(
"cloud_name", "dxoa7bbix",
"api_key", "161649288458746",
"api_secret", "..."));
我的上传方式:
public Photo uploadOrderImage(String imageURL, String publicId, Order order, String photoType) throws IOException
Map result = cloudinary.uploader().upload(new File(imageURL), ObjectUtils.asMap(
"public_id", publicId,
"tags", order.getId().toString()));
Photo sellOrderPhoto = new Photo(
result.get("secure_url").toString(),
photoType,
order
);
return photoRepository.save(sellOrderPhoto);
这是我的下载方法:
public String downloadPhotos(String tag) throws IOException
return cloudinary.downloadMulti(tag, ObjectUtils.asMap(
"tags", tag
));
我的下载方法返回的示例 URL:生成的 URL:https://api.cloudinary.com/v1_1/dxoa7bbix/image/multi?mode=download&async=false&signature=5f5da549fc78ea3fd50f034cdc76e2cce3089d48&api_key=161649288458746&tag=137×tamp=1638583257。
总的来说,我认为问题在于缺少时间戳。如果您有任何想法,那就太好了!
【问题讨论】:
【参考方案1】:错误的原因是参数应该是timestamp
,但根据你分享的URL,它实际上是×tamp
。
如果您想生成包含共享特定标签的资产的 ZIP 文件的 URL,那么您将需要使用 generate_archive 方法,而不是提供不同功能的 multi。
如果替换以下代码:
return cloudinary.downloadMulti(tag, ObjectUtils.asMap(
"tags", tag
));
与:
return cloudinary.downloadZip(ObjectUtils.asMap(
"tags", tag,
"resource_type", "image")
);
然后,它将生成并返回一个指向 ZIP 文件的 URL,该文件将在访问该 URL 时创建并包含来自您的云的图像,其中包含您指定的 tag
。
您使用的 Cloudinary Java SDK 将在使用任何内置方法时自动处理签名/时间戳生成,因此,如果出现以下情况,您无需对 SDK 代码进行任何更改或自行计算签名使用内置方法。仅当您不打算使用任何 SDK 而是使用您自己的自定义代码与 Cloudinary API 集成时才需要生成签名 - 例如,如果您使用的语言尚不存在 Cloudinary SDK。在这种情况下,如果您想执行经过身份验证的 API 调用,您需要自己 generate authentication signatures。
【讨论】:
以上是关于Cloudinary 错误:“错误”:“消息”:“缺少必需的参数 - 时间戳”的主要内容,如果未能解决你的问题,请参考以下文章
由于“cloudinary.uploader 未定义”错误,从 cloudinary 中删除媒体文件失败
Apollo-upload-client 与 Cloudinary
为啥我在 Cloudinary Java 上收到“无效签名”错误?