Как генерировать подписи облачной аутентификации в PHP (Laravel) - PullRequest
2 голосов
/ 20 июня 2019

Я использую Cloudinary с Laravel и хочу позволить пользователям выбирать из существующих файлов или загружать новые. Как я могу генерировать подписи аутентификации на BackEnd (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)) })
        }
      }
    );

Я не получаю сообщение об ошибке, но всегда требуется, чтобы пользователь вошел в облачный аккаунт

Ответы [ 2 ]

2 голосов
/ 21 июня 2019

Вы можете использовать любую функцию / библиотеку хеширования SHA-256 для создания подписи, используя значения (имя облака, метка времени, имя пользователя), указанные в документации. Используя PHP в качестве примера, пример в документации Media Library выглядит следующим образом:

<?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)
});
0 голосов
/ 20 июня 2019

Вам необходимо использовать Cloudinary PHP SDK или существует Cloudder, оболочка Laravel для Cloudinary , в которой есть несколько полезных помощников, хотя она не охватывает все варианты использования.

Облачная документация описывает загрузку изображений и видео с использованием PHP SDK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...