Cloudinary REST api 销毁不起作用? [关闭]
Posted
技术标签:
【中文标题】Cloudinary REST api 销毁不起作用? [关闭]【英文标题】:Cloudinary REST api destroy doesn't work? [closed] 【发布时间】:2022-01-11 07:01:26 【问题描述】:我正在尝试删除 Cloudinary 中的图像,但它不起作用,我哪里做错了?
此代码不返回任何结果
$api_key = "----";
$api_secret = "---";
$timestamp = time();
$signature = sha1("timestamp=".$timestamp.$api_secret);
$postRequest = array(
'public_id' => "folder/sample_public_id",
'timestamp' => $timestamp,
'api_key' => $api_key,
'signature' => $signature,
'resource_type' => 'image',
'invalidate' => true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://api.cloudinary.com/v1_1/CLOUDNAME/image/destroy");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postRequest));
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
print_r( curl_exec($ch) );
【问题讨论】:
“不起作用”不是可修复的问题。根据您调试此代码的尝试,您需要提供更准确的问题详细信息。我们无法猜测您遇到的确切问题。 cURL 可以报告错误,还可以向您显示 HTTP 响应标头等内容,因此您可以获得有关请求发生了什么的更多信息。 【参考方案1】:在没有关于该问题的其他详细信息的情况下,仅通过查看代码,我就看到了一个可以解释为什么此类请求不成功的原因。
当您是 generating authentication signatures 以调用 Cloudinary 的 API 时,除了 file
、cloud_name
、resource_type
和您的 api_key
之外,您需要签署您作为请求的一部分传递的所有参数。
在您的情况下,您只是签署了timestamp
,但在您的请求中,您还传递了public_id
和invalidate
参数。因此,您需要将它们包含在您的签名生成行中。
请注意,签名时需要按字母顺序对参数进行排序,并在末尾连接api_secret
。在这种情况下,您生成签名的第 4 行应如下所示:
$signature = sha1("invalidate=true&public_id=folder/sample_public_id×tamp=".$timestamp.$api_secret);
作为第一步,我建议进行上述更改并发送另一个请求。如果这不成功,请用更多信息更新帖子。
【讨论】:
非常感谢先生,成功了以上是关于Cloudinary REST api 销毁不起作用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作
如何使用 Cloudinary direct 正确更新或销毁图像?