- Использование API Яндекс Диска на PHP
- Получить инфо о Диске
- Получить список директорий файлов
- Создание папки
- Загрузка файлов на Диск
- Скачивание файла с Диска
- Удаление файла или папки
- Начало работы
- Basic-аутентификация
- Авторизация приложения с помощью OAuth-токена
- Начало работы
- Basic-аутентификация
- Авторизация приложения с помощью OAuth-токена
- Доступ к API
- Общие правила для составления URL
- Получение OAuth-токенов
- Доступ к API
- Общие правила для составления URL
- Получение OAuth-токенов
- Яндекс диск api php
- Загрузка файла на Диск
- Запрос URL для загрузки
- Формат запроса
- Формат ответа
Использование API Яндекс Диска на PHP
Можно найти множество применений Яндекс Диска на своем сайте, например, хранение бекапов и отчетов, обновление прайсов на сайте, выгрузка больших файлов с целью экономии места на хостинге и т.д.
Для работы с диском, Яндекс предоставляет REST API, подробное описание можно посмотреть в документации.
Также есть готовый PHP SDK – https://github.com/jack-theripper/yandex.
В статье рассмотрим, как получить OAuth токен для доступа к методам диска и базовые операции с файлами и директориями с помощью CURL.
Для доступа к API нужно создать приложение на Яндекс.OAuth – https://oauth.yandex.ru/client/new.
В форме указываем название приложения и нужные права для REST API:
Выбираем URL для разработки:
После отправки формы, получим ID созданного приложения:
Далее нужно получить OAuth токен, для этого формируем URL и переходим по нему.
https://oauth.yandex.ru/authorize?response_type=token&client_id= идентификатор приложения
Разрешаем и получаем токен.
Теперь можно работать с API, передовая токен в заголовке «Authorization».
Получить инфо о Диске
Метод возвращает общую информацию о диске – доступный объем, адреса системных папок и т.п.,
Выполняется GET-запросом, возвращает объект JSON.
Получить список директорий файлов
Также отправляется методом GET и возвращает JSON.
Параметры:
Создание папки
Запрос создания папки следует отправлять с помощью метода PUT. Если директория уже существует, API вернет ошибку.
Загрузка файлов на Диск
Чтобы загрузить файл на Диск, необходимо запросить URL для загрузки методом GET, отправив желаемое место и имя файла на диске. В ответ вернется URL на который нужно отправить файл PUT-методом. URL для загрузки действует 30 минут.
Метод загрузки файла возвращает код HTTP:
Скачивание файла с Диска
Чтобы скачать файл к себе на сервер нужно запросить URL ресурса, отправив путь к скачиваемому файлу. Далее скачать файл по полученной ссылке.
Удаление файла или папки
Если удаляется непустая папка, то она может удаляться в течение произвольного времени, поэтому API отвечает кодом 202.
Начало работы
API Яндекс.Диска доступен по адресу https://webdav.yandex.ru. Соединение должно производиться по протоколу HTTPS (порт 443).
Для доступа к данным какого-либо пользователя приложение должно быть авторизовано посредством Basic-аутентификации или OAuth-токена.
Basic-аутентификация
Приложения могут получать доступ к Дискам пользователей с помощью логинов и паролей в рамках механизма Basic-аутентификации протокола HTTP.
Для получения доступа создайте пароль приложения с типом Файлы и укажите этот пароль в настройках сервиса, который будет использовать API Яндекс.Диска.
Для Basic-аутентификации каждый запрос приложения к Яндекс.Диску должен содержать заголовок Authorization следующего вида:
Токен доступа здесь — это строка вида : в кодировке base64.
Авторизация приложения с помощью OAuth-токена
Приложения могут получать доступ к Дискам пользователей с помощью OAuth-токенов. Каждый токен предоставляет определенному приложению доступ к данным определенного пользователя.
Чтобы обращаться к сервисам Яндекса по протоколу OAuth, разработчик должен зарегистрировать свое приложение на сервисе oauth.yandex.ru, в разделе Регистрация клиентских приложений.
При регистрации приложения, использующего API Яндекс.Диска, следует выбрать соответствующие права доступа:
После регистрации приложение сможет получать OAuth-токены для доступа к данным пользователей любым подходящим способом.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
Получение и использование OAuth-токенов подробно описано в документации OAuth-сервиса Яндекса.
Начало работы
API Яндекс.Диска доступен по адресу https://webdav.yandex.ru. Соединение должно производиться по протоколу HTTPS (порт 443).
Для доступа к данным какого-либо пользователя приложение должно быть авторизовано посредством Basic-аутентификации или OAuth-токена.
Basic-аутентификация
Приложения могут получать доступ к Дискам пользователей с помощью логинов и паролей в рамках механизма Basic-аутентификации протокола HTTP.
Для получения доступа создайте пароль приложения с типом Файлы и укажите этот пароль в настройках сервиса, который будет использовать API Яндекс.Диска.
Для Basic-аутентификации каждый запрос приложения к Яндекс.Диску должен содержать заголовок Authorization следующего вида:
Токен доступа здесь — это строка вида : в кодировке base64.
Авторизация приложения с помощью OAuth-токена
Приложения могут получать доступ к Дискам пользователей с помощью OAuth-токенов. Каждый токен предоставляет определенному приложению доступ к данным определенного пользователя.
Чтобы обращаться к сервисам Яндекса по протоколу OAuth, разработчик должен зарегистрировать свое приложение на сервисе oauth.yandex.ru, в разделе Регистрация клиентских приложений.
При регистрации приложения, использующего API Яндекс.Диска, следует выбрать соответствующие права доступа:
После регистрации приложение сможет получать OAuth-токены для доступа к данным пользователей любым подходящим способом.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
Получение и использование OAuth-токенов подробно описано в документации OAuth-сервиса Яндекса.
Доступ к API
Для успешного вызова API необходимы:
URL, составленный согласно требованиям к нужному запросу.
OAuth-токен, выданный вашему приложению для доступа к Диску определенного пользователя. Для запросов, которые не требуют авторизации, это указано явно.
Общие правила для составления URL
Правила, общие для всех ресурсов:
Корневой каталог Диска может быть указан как явно, так и неявно – пути disk:/foo и /foo указывают на одну и ту же папку.
Получение OAuth-токенов
Яндекс.Диск авторизует приложения с помощью OAuth-токенов. Каждый токен предоставляет определенному приложению доступ к данным определенного пользователя.
Чтобы использовать протокол OAuth при работе с сервисом Яндекса, вам нужно зарегистрировать свое приложение. При регистрации приложения, использующего Яндекс.Диск, выберите нужные права доступа (помимо доступа к файлам пользователя можно пользоваться папкой приложения):
После регистрации приложение сможет получать OAuth-токены для доступа к данным пользователей на Диске.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
Доступ к API
Для успешного вызова API необходимы:
URL, составленный согласно требованиям к нужному запросу.
OAuth-токен, выданный вашему приложению для доступа к Диску определенного пользователя. Для запросов, которые не требуют авторизации, это указано явно.
Общие правила для составления URL
Правила, общие для всех ресурсов:
Корневой каталог Диска может быть указан как явно, так и неявно – пути disk:/foo и /foo указывают на одну и ту же папку.
Получение OAuth-токенов
Яндекс.Диск авторизует приложения с помощью OAuth-токенов. Каждый токен предоставляет определенному приложению доступ к данным определенного пользователя.
Чтобы использовать протокол OAuth при работе с сервисом Яндекса, вам нужно зарегистрировать свое приложение. При регистрации приложения, использующего Яндекс.Диск, выберите нужные права доступа (помимо доступа к файлам пользователя можно пользоваться папкой приложения):
После регистрации приложение сможет получать OAuth-токены для доступа к данным пользователей на Диске.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
Яндекс диск api php
PHP библиотека к API Яндекс диска
Неофициальное PHP SDK для сервиса Яндекс.Диск
Запуск тестов из корня библиотеки:
SDK для работы использует WebDAV API Яднекс Диска. Для работы необходим OAuth-токен(например, AQACc1234LDE2f_123UIbouFHzfxxcvDI), который необходимо получить самостоятельно:
OAuth-токен должен иметь разрешённые права «Яндекс.Диск WebDAV API«
SDK поддерживает скачивание файлов несколькими способами:
Потоковое скачивание частями
Скачивание без потока
Первым параметром передаётся размер превью, может быть применён любой из документации
Превью может быть получена потоком, либо без потока
Так же первым параметром можно передать объект типа \Leonied7\Yandex\Disk\Collection\PropertyCollection для получения свойств для всех элементов.
Пример написан для файла, но метод так же применим для директории
Так как для проверки существования используется метод запроса свойств, то по умолчанию Яндекс.Диск отдаёт свойства. При вызове метода has() можно передать объект типа \Leonied7\Yandex\Disk\Collection\PropertyCollection.
Если объект не передаётся, то выбираются все доступные свойства автоматически.
Получить пришедшие свойства можно следущим образом:
Результат будет хранить только успешно полученные свойства.
Для получения ошибочных свойств
Пример написан для файла, но метод так же применим для директории
По стандарту если файл уже существует по назначения, то он будет перезаписан. Для запрета перезаписи, необходимо передать вторым параметром false
Пример написан для файла, но метод так же применим для директории
По стандарту если файл уже существует по назначения, то он будет перезаписан. Для запрета перезаписи, необходимо передать вторым параметром false
Пример написан для файла, но метод так же применим для директории
Пример написан для файла, но метод так же применим для директории
Результат будет хранить только успешно полученные свойства.
Для получения ошибочных свойств
Получение существующих свойств (Применимо для файла/директории)
Пример написан для файла, но метод так же применим для директории
Пример написан для файла, но метод так же применим для директории
Есть два способа изменения свойств у элемента:
Изменение переданных свойств
Добавляем свойства myprop и propmy с namespace mynamespace значения foo и bar соответственно. Удаляем свойство propprop
Сохранение заранее полученных свойств
Неименяемые свойства не сохраняются
В загруженной коллекции есть свойства двух видов, изменяемые и неименяемые
Свойства приходят неизменяемыми для встроенных свойств Яндекс.Диска. Например quota-available-bytes будет неизменяемым
Для получения только изменяемых свойств коллекции
Так же можно узнать можно ли изменять свойтво через метод у свойства canChanged()
После этого сохраняем измененные значения
Пример написан для файла, но метод так же применим для директории
Пример написан для файла, но метод так же применим для директории
Пример написан для файла, но метод так же применим для директории
Загрузка файла на Диск
Чтобы загрузить файл на Диск, необходимо:
Запрос URL для загрузки
Формат запроса
Запрос URL для загрузки следует отправлять с помощью метода GET.
Путь в значении параметра следует кодировать в URL-формате.
Признак перезаписи файла. Учитывается, если файл загружается в папку, в которой уже есть файл с таким именем.
false — не перезаписывать файл, отменить загрузку (используется по умолчанию);
true — удалить файл с совпадающим именем и записать загруженный файл.
Список свойств JSON, которые следует включить в ответ. Ключи, не указанные в этом списке, будут отброшены при составлении ответа. Если параметр не указан, ответ возвращается полностью, без сокращений.
Путь в значении параметра следует кодировать в URL-формате.
Признак перезаписи файла. Учитывается, если файл загружается в папку, в которой уже есть файл с таким именем.
false — не перезаписывать файл, отменить загрузку (используется по умолчанию);
true — удалить файл с совпадающим именем и записать загруженный файл.
Список свойств JSON, которые следует включить в ответ. Ключи, не указанные в этом списке, будут отброшены при составлении ответа. Если параметр не указан, ответ возвращается полностью, без сокращений.
Формат ответа
Если запрос вызвал ошибку, возвращается подходящий код ответа, а тело ответа содержит описание ошибки.
Признак URL, который был шаблонизирован согласно RFC 6570. Возможные значения: