如何在 PHP(Laravel) 中生成 Cloudinary 身份验证签名
How to generate Cloudinary Authentication signatures in PHP(Laravel)
我将 Cloudinary 与 Laravel 一起使用,我想让用户从现有文件中选择或上传新文件。如何在后端生成身份验证签名(在我的例子中为 php)?并传给前端(JavaScript)?
我试过使用未签名的上传预设让用户上传而不需要他们登录,但没有成功。
mediaWidget = cloudinary.createMediaLibrary({
cloud_name: "my-cloud-name",
api_key: 'my-api-key',
username: 'email id',
uploadPreset: "unsigned-upload-preset",
multiple: false,
}, {
insertHandler: function (data) {
data.assets.forEach(asset => { console.log("Inserted asset:",
JSON.stringify(asset, null, 2)) })
}
}
);
我没有收到任何错误,但它总是要求用户登录到 cloudinary 帐户
您需要使用 Cloudinary PHP SDK or there is a Cloudder, a Laravel wrapper for Cloudinary,它有一些不错的助手,尽管它没有涵盖所有用例。
Cloudinary documentation 涵盖了使用 PHP SDK 上传图片和视频。
您可以使用任何 SHA-256 哈希 function/library 来使用文档中提到的值(云名称、时间戳、用户名)创建签名。以 PHP 为例,Media Library documentation 中的示例如下所示:
<?php
$cloud_name = 'my_company';
$timestamp = '1518601863';
$username= 'jane@mycompany.com';
$api_secret = 'abcd';
$payload_to_sign = 'cloud_name='.$cloud_name.'×tamp='.$timestamp.'&username='.$username;
$signature = hash('sha256', $payload_to_sign . $api_secret);
print($signature);
?>
这提供了与文档示例相同的输出:5cbc5a2a695cbda4fae85de692d446af68b96c6c81db4eb9dd2f63af984fb247
然后,在用于启动媒体库小部件的 Javascript 代码中,您传递相同的时间戳和来自 server-side 代码的签名,它应该打开并以您的身份登录指定用户:
window.ml = cloudinary.createMediaLibrary({
cloud_name: 'my_company',
api_key: '1234567890',
username: 'jane@mycompany.com',
timestamp: '1518601863',
signature: '5cbc5a2a695cbda4fae85de692d446af68b96c6c81db4eb9dd2f63af984fb247'
}, function(error, result) {
console.log(error, result)
});
我将 Cloudinary 与 Laravel 一起使用,我想让用户从现有文件中选择或上传新文件。如何在后端生成身份验证签名(在我的例子中为 php)?并传给前端(JavaScript)?
我试过使用未签名的上传预设让用户上传而不需要他们登录,但没有成功。
mediaWidget = cloudinary.createMediaLibrary({
cloud_name: "my-cloud-name",
api_key: 'my-api-key',
username: 'email id',
uploadPreset: "unsigned-upload-preset",
multiple: false,
}, {
insertHandler: function (data) {
data.assets.forEach(asset => { console.log("Inserted asset:",
JSON.stringify(asset, null, 2)) })
}
}
);
我没有收到任何错误,但它总是要求用户登录到 cloudinary 帐户
您需要使用 Cloudinary PHP SDK or there is a Cloudder, a Laravel wrapper for Cloudinary,它有一些不错的助手,尽管它没有涵盖所有用例。
Cloudinary documentation 涵盖了使用 PHP SDK 上传图片和视频。
您可以使用任何 SHA-256 哈希 function/library 来使用文档中提到的值(云名称、时间戳、用户名)创建签名。以 PHP 为例,Media Library documentation 中的示例如下所示:
<?php
$cloud_name = 'my_company';
$timestamp = '1518601863';
$username= 'jane@mycompany.com';
$api_secret = 'abcd';
$payload_to_sign = 'cloud_name='.$cloud_name.'×tamp='.$timestamp.'&username='.$username;
$signature = hash('sha256', $payload_to_sign . $api_secret);
print($signature);
?>
这提供了与文档示例相同的输出:5cbc5a2a695cbda4fae85de692d446af68b96c6c81db4eb9dd2f63af984fb247
然后,在用于启动媒体库小部件的 Javascript 代码中,您传递相同的时间戳和来自 server-side 代码的签名,它应该打开并以您的身份登录指定用户:
window.ml = cloudinary.createMediaLibrary({
cloud_name: 'my_company',
api_key: '1234567890',
username: 'jane@mycompany.com',
timestamp: '1518601863',
signature: '5cbc5a2a695cbda4fae85de692d446af68b96c6c81db4eb9dd2f63af984fb247'
}, function(error, result) {
console.log(error, result)
});