API Яндекс.Диск (PHP) #1: Подключение и настройка приложения
В новом курсе мы с вами познакомимся с API Яндекс.Диска, научимся создавать директории, добавлять файлы и просматривать имеющиеся ресурсы в облаке. В процессе обучения мы с вами будем писать скрипты на PHP с использованием Curl и по окончанию курса разработаем полноценный класс для работы с Яндекс Диском через API.
Создание приложения для работы с API Яндекс.Диск
Для начала нам необходимо создать наше приложение и получить токен.
Перейдите по ссылке и заполните форму
- В качестве платформы приложения нужно выбрать «Веб-сервисы»
- Для полного доступа к Яндекс.Диску нужно прописать в поле слово cloud и добавить все доступные значения.
После успешного создания приложения вас перебросит в личный кабинет, во вкладку «Мои приложения». Здесь вам нужно скопировать «ClientID» и вставить его в ссылку представленную ниже, для получения токена вашего приложения.
https://oauth.yandex.ru/authorize?response_type=token&client_id=идентификатор_клиента
Далее вам нужно перейти по этой ссылке в браузере и если вы все сделали правильно вас перекинет на сайт который вы указали в качестве редиректа при создание приложения. К вашему базовому URL будет добавлен GET параметр с указанием токена (access_token), который вам нужно скопировать и вставить в ваш скрипт.
Создание класса для работы с API Яндекс.Диск
Теперь давайте начнём создавать наш PHP класс. В качестве примера я буду создавать класс для сохранения бэкапов на Яндекс.Диск.
Основной функционал нашего класса:
- получение информации о файлах находящихся на диске, доступном объёме памяти и размере корзины
- получение, загрузка и удаление файлов и директорий
- работа с корзиной
Наш класс будет называться примитивно Backup и для начала иметь 2 метода: метод для отправки запросов и метод для получение общей информации об аккаунте Яндекс.Диска.
Так же нашему классу нужно добавить 1 свойство $token, в который необходимо прописать значение нашего токена.
Метод для отправки запросов в Яндекс.Диск
Метод для отправки запросов sendQueryYaDisk() будет принимать 3 параметра и будет универсальным для любых типов запросов.
/** * Method sendQueryYaDisk * * @param string $urlQuery URL для отправки запросов * @param array $arrQuery массив параметров * @param string $methodQuery метод отправки * * @return array */ public function sendQueryYaDisk(string $urlQuery, array $arrQuery = [], string $methodQuery = 'GET'): array < if($methodQuery == 'POST') < $fullUrlQuery = $urlQuery; >else < $fullUrlQuery = $urlQuery . '?' . http_build_query($arrQuery); >$ch = curl_init($fullUrlQuery); switch ($methodQuery) < case 'PUT': curl_setopt($ch, CURLOPT_PUT, true); break; case 'POST': curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arrQuery)); break; case 'DELETE': curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); break; >curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: OAuth ' . $this->token]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_HEADER, false); $resultQuery = curl_exec($ch); curl_close($ch); return (!empty($resultQuery)) ? json_decode($resultQuery, true) : []; >
Метод для получения общей информации о Яндекс.Диске
Для получения общей информации о Яндекс.Диске необходимо отправить запрос на https://cloud-api.yandex.net/v1/disk/.
/** * Метод для получения общей информации об аккаунте * * @return array */ public function disk_getInfo(): array < $urlQuery = 'https://cloud-api.yandex.net/v1/disk/'; return $this->sendQueryYaDisk($urlQuery); >
Яндекс Диск — как поделиться файлами оттуда с помощью ссылки
В последнее время актуально хранение фотографий или других документов в облачных хранилищах. Один из самых удобных — Яндекс Диск. Для нового пользователя порой непонятен механизм работы виртуальных хранилищ. Часто возникает вопрос — как сделать ссылку на Яндекс Диск для другого пользователя для скачивания хранящихся там файлов.
Создание ссылки
Чтобы не обмениваться файлами с помощью USB носителей, не сталкиваться с ограничениями по размеру документа в электронной почте, достаточно использовать прямую ссылку, содержащую URL-адрес на Яндекс Диск (на папку с документами или фотографиями). Для ее создания:
● Зайдите в свой аккаунт Яндекс, откройте Диск
● Выберите документ, папку с данными, которыми хотите поделиться
● На всплывающей верхней панели слева есть значок «Поделиться» — кликните по нему
● Появится URL-адрес на выбранный элемент и способы, которыми можно ею поделиться:
— копировать ссылку и вставить в удобном для вас месте
Узнайте, где хранится скопированный URL-адрес в статье.
— поделиться в одной из предложенных социальных сетей
— отправить по электронной почте
— получить QR-код для скачивания
Посмотреть данные, ставшие публичными можно слева в меню. Найдите вкладку «Общий доступ» →»Ссылки». Файлы с отправленной ссылкой отмечены в уголке значком, похожим на цепь.
Особенности ссылок на хранилище Яндекс
Ссылки формируются на элементы из корневого каталога Диска. Почтовые вложения из электронной Яндекс Почты лежат во вкладке «Архив». Их нужно перенести в папку Диска для формирования URL-адреса.
Вы не сможете поделиться папкой и информацией в ней, если вы не владелец и имеете доступ только к просмотру.
Работа ссылки заканчивается тогда, когда вы закрываете доступ. Если элемент публикуется заново, формируется новый URL-адрес. Если вы хотите заново получить ссылку на один и тот же файл или папку — она будет одинаковая с прошлой.
Количество просмотров и скачиваний по ссылке отображается при наведении на значок «цепочки». Символ глаза с указанным числом соответствует числу просмотров, символ и число скачивания находится рядом. Не нужно кликать на значок, достаточно просто навести курсор мышки.
Какие возникают трудности?
— Не удается сгенерировать ссылку. Обычно связано с недостатком свободного места. Когда память облачного хранилища заканчивается, функционал хранилища ограничивается. Отсутствует возможность:
1. загрузить элементы
2. поделиться общедоступными данными и создавать их
3. закрывается доступ к ранее открытым папкам
Для владельца остаются возможности просматривать, редактировать, перемещать, скачивать и удалять данные на Яндекс Диске.
Для освобождения места в хранилище не обязательно удалять что-либо. Сервисом предусмотрена возможность покупки дополнительного места.
— Не удается скачать файл. У этой проблемы есть несколько основных источников:
1. Ограничение по числу скачивания. При высоком количестве скачиваний сервис лимитирует эту возможность на сутки. Сохраните элемент на свой Диск, избегая данного ограничения. Еще один вариант — установить Про версию, снимающую ограничения скачивания.
2. Влияние расширений браузера. Часто некорректную работу сайта вызывает блокировщик рекламы или антивирус. Попробуйте внести страницу в сайт-исключения для плагина, с последующей перезагрузкой.
3. Плохое интернет-соединение. При загрузке больших файлов закройте все лишние вкладки, отключите сервисы, использующие Интернет. Антивирус дополнительно негативно сказывается на скорости соединения.
4. Устаревшая версия браузера. Старая версия иногда не поддерживает технологию быстрого скачивания.
— Скачивание больших элементов. Загрузить папки, в которых больше 500 файлов или их размер превышает 5 ГБ просто так не получится. Сначала сохраните их на свой Яндкес Диск и скачайте через приложение для компьютера. Зайдите в папку «Загрузки» и выберите «Создать копию на компьютере».
Ссылка на Яндекс Диск облегчает работу с файлами и обменом с другими пользователями. Как её сделать вы теперь знаете и можете пользоваться облачным хранилищем в своей работе.
