【问题标题】:How to generate Cloudinary Authentication signatures in PHP(Laravel)如何在 PHP(Laravel) 中生成 Cloudinary 身份验证签名
【发布时间】:2019-11-03 04:38:54
【问题描述】:

我将 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 帐户

【问题讨论】:

    标签: javascript php jquery laravel cloudinary


    【解决方案1】:

    您可以使用任何 SHA-256 散列函数/库来使用文档中提到的值(云名称、时间戳、用户名)创建签名。以 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.'&timestamp='.$timestamp.'&username='.$username;
    
    $signature = hash('sha256', $payload_to_sign . $api_secret);
    print($signature);
    ?>
    

    这提供了与文档示例相同的输出:5cbc5a2a695cbda4fae85de692d446af68b96c6c81db4eb9dd2f63af984fb247

    然后,在用于启动媒体库小部件的 Javascript 代码中,您传递相同的时间戳和来自服务器端代码的签名,它应该以指定用户的身份打开并登录:

    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)
    });
    

    【讨论】:

      【解决方案2】:

      您需要使用Cloudinary PHP SDK,或者有一个Cloudder, a Laravel wrapper for Cloudinary,它有一些不错的助手,尽管它并不涵盖所有用例。

      Cloudinary documentation 涵盖了使用 PHP SDK 上传图片和视频。

      【讨论】:

      • 感谢@BlueC 的回复,我已经使用上面提到的Cloudder Package 来上传文件,效果很好。但我在这里需要的是一种使用Media Library Widget 让用户从现有文件中选择或上传新文件的方法,当用户登录云帐户时它可以完美运行,这就是问题所在,我希望用户能够无需登录即可使用媒体库小部件。
      猜你喜欢
      • 1970-01-01
      • 2014-03-06
      • 2017-02-05
      • 2020-07-16
      • 2015-12-03
      • 1970-01-01
      • 2022-06-28
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多