API Яндекс.Диск (PHP) #1: Подключение и настройка приложения

от автора

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

Полный список всех записей курса находится на сайте https://prog-time.ru/course_cat/yandeks-disk-api-php/ или в публикациях на Хабр https://habr.com/ru/users/Prog-Time/posts/

Создание приложения для работы с API Яндекс.Диск

Для начала нам необходимо создать наше приложение и получить токен.

Перейдите по ссылке и заполните форму

https://oauth.yandex.ru/client/new

Важные моменты:

  1. В качестве платформы приложения нужно выбрать «Веб-сервисы»

  2. Для полного доступа к Яндекс.Диску нужно прописать в поле слово 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); }

Пример ответа:

{   "trash_size": 4631577437,   "total_space": 319975063552,   "used_space": 26157681270,   "system_folders":   {     "applications": "disk:/Приложения",     "downloads": "disk:/Загрузки/"   } }

Параметр

Описание

trash_size

Объем файлов, находящихся в Корзине, в байтах.

total_space

Общий объем Диска, доступный пользователю, в байтах.

used_space

Объем файлов, уже хранящихся на Диске, в байтах.

system_folders

Абсолютные адреса системных папок Диска. Имена папок зависят от языка интерфейса пользователя в момент создания персонального Диска.

Например, для англоязычного пользователя создается папка Downloads, для русскоязычного — Загрузки и т. д.

На данный момент поддерживаются следующие папки:

applications — папка для файлов приложений;

downloads — папка для файлов, загруженных из интернета (не с устройства пользователя).

На этом можно пока закончить. В следующих уроках мы познакомимся с API Яндекс.Диска поближе.


ссылка на оригинал статьи https://habr.com/ru/articles/749156/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *