无法使用客户端签名调用将图像上传到 Cloudinary - 签名无效
Can't upload image to Cloudinary using client side signature call - invalid signature
我似乎无法生成正确的签名来成功上传图片。
错误信息-
message:'Invalid Signature 953e29c9b5cac0f611e347d508aaff75f11f0547. String to sign - 'timestamp=1631318071'.'
也许有人可以告诉我哪里出了问题?也许是某些东西的顺序(根据文档)?
仅供参考 - 我尝试更改我在参数服务器端传递的顺序,但它似乎并没有成功上传。
以下是我如何生成签名客户端 (C#) 并将数据传递给客户端 (Angular)
DateTime foo = DateTime.Now;
long timeStamp = ((DateTimeOffset)foo).ToUnixTimeSeconds();
var p = new Dictionary<string, object>();
p.Add("api_key", _cloudinaryConfig.Value.ApiKey);
p.Add("api_secret", _cloudinaryConfig.Value.ApiSecret);
p.Add("cloud_name", _cloudinaryConfig.Value.CloudName);
p.Add("timestamp", timeStamp);
var signature = _cloudinary.Api.SignParameters(p);
return Ok(new {
cloudUploadUrl = _cloudUploadUrl,
cloudName = _cloudinaryConfig.Value.CloudName,
cloudApiKey = _cloudinaryConfig.Value.ApiKey,
cloudSignature = signature,
cloudTimeStamp = timeStamp
});
这是客户端试图在 Angular
中上传图片
const data = new FormData();
data.append('file', croppedImage.base64);
data.append("api_key", cloudinaryParams.cloudApiKey);
data.append("signature", cloudinaryParams.cloudSignature);
data.append("timestamp", cloudinaryParams.cloudTimeStamp);
const fileResult = await fetch(cloudinaryParams.cloudUploadUrl, {
method: 'POST',
body: data,
});
const fileData = await fileResult.json();
if (fileData.error) {
// do something to handle the error!
}
错误消息中的字符串显示在服务器端根据您在上传 API 调用中提供的签名检查的参数。
根据该错误,为您的示例上传 API 调用创建签名的唯一参数是“timestamp”,它的值需要为 1631318071 在 API 调用和创建签名的函数中:https://cloudinary.com/documentation/signatures
如果我正确理解了您的 C# 代码,您很可能可以通过删除所有 p.add() 调用来解决此问题,但带有时间戳参数的调用除外
我似乎无法生成正确的签名来成功上传图片。
错误信息-
message:'Invalid Signature 953e29c9b5cac0f611e347d508aaff75f11f0547. String to sign - 'timestamp=1631318071'.'
也许有人可以告诉我哪里出了问题?也许是某些东西的顺序(根据文档)?
仅供参考 - 我尝试更改我在参数服务器端传递的顺序,但它似乎并没有成功上传。
以下是我如何生成签名客户端 (C#) 并将数据传递给客户端 (Angular)
DateTime foo = DateTime.Now;
long timeStamp = ((DateTimeOffset)foo).ToUnixTimeSeconds();
var p = new Dictionary<string, object>();
p.Add("api_key", _cloudinaryConfig.Value.ApiKey);
p.Add("api_secret", _cloudinaryConfig.Value.ApiSecret);
p.Add("cloud_name", _cloudinaryConfig.Value.CloudName);
p.Add("timestamp", timeStamp);
var signature = _cloudinary.Api.SignParameters(p);
return Ok(new {
cloudUploadUrl = _cloudUploadUrl,
cloudName = _cloudinaryConfig.Value.CloudName,
cloudApiKey = _cloudinaryConfig.Value.ApiKey,
cloudSignature = signature,
cloudTimeStamp = timeStamp
});
这是客户端试图在 Angular
中上传图片const data = new FormData();
data.append('file', croppedImage.base64);
data.append("api_key", cloudinaryParams.cloudApiKey);
data.append("signature", cloudinaryParams.cloudSignature);
data.append("timestamp", cloudinaryParams.cloudTimeStamp);
const fileResult = await fetch(cloudinaryParams.cloudUploadUrl, {
method: 'POST',
body: data,
});
const fileData = await fileResult.json();
if (fileData.error) {
// do something to handle the error!
}
错误消息中的字符串显示在服务器端根据您在上传 API 调用中提供的签名检查的参数。
根据该错误,为您的示例上传 API 调用创建签名的唯一参数是“timestamp”,它的值需要为 1631318071 在 API 调用和创建签名的函数中:https://cloudinary.com/documentation/signatures
如果我正确理解了您的 C# 代码,您很可能可以通过删除所有 p.add() 调用来解决此问题,但带有时间戳参数的调用除外