Яндекс диск api php

Использование API Яндекс Диска на PHP

Можно найти множество применений Яндекс Диска на своем сайте, например, хранение бекапов и отчетов, обновление прайсов на сайте, выгрузка больших файлов с целью экономии места на хостинге и т.д.

Для работы с диском, Яндекс предоставляет REST API, подробное описание можно посмотреть в документации.
Также есть готовый PHP SDK – https://github.com/jack-theripper/yandex.

В статье рассмотрим, как получить OAuth токен для доступа к методам диска и базовые операции с файлами и директориями с помощью CURL.

Для доступа к API нужно создать приложение на Яндекс.OAuth – https://oauth.yandex.ru/client/new.

В форме указываем название приложения и нужные права для REST API:

2017 11 2912 44 03

2017 11 29 12 44 47

Выбираем URL для разработки:

2017 11 29 12 46 11

После отправки формы, получим ID созданного приложения:

2017 11 29 12 46 28

Далее нужно получить OAuth токен, для этого формируем URL и переходим по нему.

https://oauth.yandex.ru/authorize?response_type=token&client_id= идентификатор приложения

2017 11 29 13 05 05

Разрешаем и получаем токен.

2017 11 29 13 05 28

Теперь можно работать с 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 при работе с сервисом Яндекса, вам нужно зарегистрировать свое приложение. При регистрации приложения, использующего Яндекс.Диск, выберите нужные права доступа (помимо доступа к файлам пользователя можно пользоваться папкой приложения):

H8sGnEdgYhNOrK PDq2 OCWGzvg

После регистрации приложение сможет получать 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. Возможные значения:

Источник

Моя дача
Adblock
detector