привет, всем! недавно встала задача, сохранения и вывода изображений с яндекс диска на сайте. С сохранением изображений на диск справился используя https://github.com/DEN007/Yandex.Disk-FULL-API этот класс. Но вот с получением файлов возникают проблемы. описываю по порядку что я делал и какой результат получал. 1. пытался вывести файлы используя метод get() того же класса ls($path) - метод вывода всех файлов из указанного url $path get($url, $buffer) получение файла // $value['href'] - ссылка на файл // $value['getcontenttype'] - тип файла вот код: Код (Text): //формирую url к папке с файлами $path = '/'.$config['year'].'/'.$palmer_company.'/'.$id; // получаю список файлов из папки $dir = $wdc->ls($path); foreach ($dir as $value) { // если тип файла png, то получаем его if ($value['getcontenttype'] == 'image/png') { $http_status = $wdc->get($value['href'], $buffer); print ' статус сервера ' . $http_status["status"] . '. размер файла ' . strlen($buffer). ' байт.<br>'; // кодирую файл, чтобы вставить его в теги img $buffer = base64_encode($buffer); echo "<img class='thumb' src='data:{$value['getcontenttype']};base64,{$buffer}'>"; } } Результат: возвращает только первую фотографию. Метод 2. Пытаюсь get запросом получить доступ к файлам как описано тут: http://api.yandex.ru/disk/doc/dg/reference/preview.xml /** * делаем GET запос к яндекс фоткам. * устанавливаем заголовоки, в ней передаем пароль и логин от яндекса в base64 * */ Код (Text): $login = "login"; //можно и без @yandex.ru $password = "password"; $headers = array("Authorization: Basic " . base64_encode($login . ":" . $password)); //формируем заголовки для успешной авторизации $ch = curl_init (); curl_setopt ($ch , CURLOPT_URL , 'https://webdav.yandex.ru/3.png?preview&size=250x'); curl_setopt ($ch , CURLOPT_USERAGENT , "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11"); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt ($ch , CURLOPT_HEADER , 0); curl_setopt ($ch , CURLOPT_RETURNTRANSFER , 1 ); curl_setopt ($ch , CURLOPT_BINARYTRANSFER , 1); $content = curl_exec($ch); curl_close($ch); Результат: bad authorization! Подскажите пожалуйста, что я не так делаю? и куда копать?
Есть легенда, что, кликнув ссылку, можно попасть на страницу, с которой она связана. Не, ну правда, там же все написано.
чему там не получиться-то? Шлёшь https://oauth.yandex.ru/authorize?response_type=code&client_id={id приложения} и получаешь на callback url код Постом постом на https://oauth.yandex.ru/token шлёшь grant_type=authorization_code&code={полученный в прошлом шаге код}&client_id= {id приложения}&client_secret={пароль приложения} получаешь токен Шлёшь запрос на https://cloud-api.yandex.net/v1/disk/resources/download?path={путь к твоему файлу} и указываешь в заголовках Authorization: OAuth {полученный токен} В ответе json с ссылкой для скачки. Всё же линейно. p.s. Можно, правда, получить токен сразу, минуя код, если послать запрос на https://oauth.yandex.ru/authorize?response_type=token&client_id={id приложения}, но там токен после якоря указан и замучаешься в php его получать
вот встреваю я именно тут, как отправить запрос? какой указывать путь и как устанавливать в заголовках Authorization: OAuth? чуваки, помогите ))))
Код (PHP): $headers = array("Authorization: OAuth {647529b0e06cxxxx.....xxxx88da3aa}"); $curl = curl_init('https://cloud-api.yandex.net/v1/disk/resources/download?path=3.png'); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl,CURLOPT_HEADER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_exec($curl); $info = curl_getinfo($curl); // используем BB-коды. Luge
выводит !!!))) $headers = array("Authorization: OAuth 647529b0e06cxxxx.....xxxx88da3aa"); $curl = curl_init('https://cloud-api.yandex.net/v1/disk/resources/download?path=%2F3.png'); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl,CURLOPT_HEADER, true); curl_exec($curl); $info = curl_getinfo($curl);
теперь вопрос, когда я зареган с аккаунта на котором я получал token, он выдает ссылки на файлы для скачивания, а когда выхожу с этого профиля, то ссылки ведут на несуществующую страницу