php yandex disk api
Php yandex disk api
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. Возможные значения:
Доступ к 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 Диска, указывая тип токена перед его значением. Пример такого заголовка:
Простая работа с Yandex Disk API
Некоторое время назад мы уже рассматривали работу с Google Drive API на PHP.
На этот раз рассмотрим работу с Яндекс.Диск API на PHP. В этом примере я буду использовать библиотеку nixsolutions/yandex-php-library.
Сразу же отмечу, что данная библиотека уже устарела и ее не рекомендуется использовать в рабочем проекте. Но в нашем случае, пример был написан давно и носит он исключительно учебный характер.
Описывать подробно процесс получения токена не стану, т.к. это выходит за рамки данной статьи. Однако, чтобы получить токен, для начала необходимо авторизироваться в Яндекс и попробовать создать новое приложение (в качестве доступа отмечаем все галочки в разделе Яндекс.Диск REST API).
Листинг основного файла (index.php).
Листинг файла с разметкой (index.phtml).
А вот пример того, как это будет выглядеть, если запустить скрипт.
Получился простой пример для работы с АПИ Яндекс диска. Пример довольно старый, но вполне рабочий. Для работы диска лучше завести свои токены (в статье используются тестовые токены, которые могут со временем перестать работать).
Спасибо за внимание и до новых встреч.
Полезные материалы:
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Начало работы
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-сервиса Яндекса.