Как получить токен яндекс диск для aimp
Correct Accept and Content-Type headers: the Yandex.Disk API only supports the application/json MIME type. Any other value will cause a data format error.
A URL formed to meet the requirements of the request.
The OAuth token issued to your application for accessing a specific user's data on Yandex.Disk. For requests that do not require authorization, this is specified explicitly.
Получение OAuth-токенов
Яндекс.Диск авторизует приложения с помощью OAuth-токенов. Каждый токен предоставляет определенному приложению доступ к данным определенного пользователя.
Чтобы использовать протокол OAuth при работе с сервисом Яндекса, вам нужно зарегистрировать свое приложение. При регистрации приложения, использующего Яндекс.Диск, выберите нужные права доступа (помимо доступа к файлам пользователя можно пользоваться папкой приложения):
После регистрации приложение сможет получать OAuth-токены для доступа к данным пользователей на Диске.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
Для доступа к данным какого-либо пользователя приложение должно быть авторизовано посредством Basic-аутентификации или OAuth-токена.
Приступаем к разработке
В первую очередь нужно зарегистрировать приложение и создать аккаунт разработчика. Вы же не хотите, чтобы в результате ваших экспериментов что-нибудь случилось с файлами на вашем личном Диске. Далее вам нужно получить токен и немного разобраться с Полигоном. Вот и все, можно начинать писать код.
После регистрации приложения все совсем просто. Вы получаете ID приложения и пароль. Самое важное — это ID, так как он нужен для выдачи токенов пользователям. Пароль тоже важен, но это зависит от того, как вы используете API, как работаете с OAuth. Для веб-сервисов пароль может оказаться даже важней.
Скорее всего, потребуется сразу несколько таких аккаунтов, ведь вам нужно будет тестировать возможности передачи файлов между аккаунтами. Кроме того, в наши дни желательно использовать автотесты, для них может потребоваться еще пара аккаунтов. Просто отправляйте инвайты со своего личного аккаунта. В этом есть приятный бонус, ведь за каждый аккаунт вы получите по 500 мегабайт на своем Диске.
Когда все приготовления окончены, можно начинать писать код. Как я уже говорил, сам я начал писать SDK для Swift.
Рассказывать о нем в полной мере не имеет смысла, так что для демонстрации я убрал самое сложное и сократил объем кода до 200 строк. Заставить что-то работать очень просто.
В этом примере я использую чистый JSON, но можно также использовать JSON+HAL. Обязательно нужно прописать авторизацию. Большинство вопросов о Яндекс.Диске касаются не самого API, а OAuth. Оказывается, что это вызывает гораздо больше сложностей при работе с Диском, чем сам API. Так что, если вы разобрались с OAuth, вы практически у цели. В User-Agent можно прописать все что угодно, например какой-нибудь идентификатор вашего приложения.
К сожалению, каким бы клевым ни был Swift, это все-таки язык со статической типизацией, так что при использовании API Objective-C приходится делать много подобных вещей. Допустим, возвращаются какие-то данные и вы хотите получить их как NSDictionary. Это генерирует много дополнительного кода, так что, как мне подсказывает опыт, вы начнете писать всякие вспомогательные штуки типа JSONDictionaryWithData. Таким образом, вы получаете данные, делаете запрос, обрабатываете ошибки, а затем возвращаете уже нужный объект. Работая с подобным API, нужно делать много запросов. Так что я также имплементировал что-то вроде JSON-тасков с методами: GET, POST, DELETE и т. д.
И еще URL с обработчиком ошибок и завершений. Swift очень эффективен при работе с замыканиями, там это один из базовых типов. По сравнению с питоном замыкания тут хорошо интегрированы синтаксически, работать с ними гораздо приятнее. Кроме того, можно сделать специальную зону для трехсотых и четырехсотых кодов прямо в этих вспомогательных блоках.
Давайте еще посмотрим, как происходит загрузка файла. Я сделал пару скриншотов прямо с Полигона. Верхний — про параметры. Тут у нас путь на Диске, куда будут сохраняться файлы, а также пометка о том, нужно ли файл перезаписывать. В ответ вы получите от Диска что-то вроде этого:
Работая с REST API, вы будете сталкиваться с такой конструкцией чаще всего.
В JSONDictionary полезно завести topper, тоже неплохой тип из Swift. Вот и вся загрузка. Просто выстраиваете URL, указываете, хотите ли вы делать перезапись, создаете обработчик ошибок. Это просто замыкание, которое оборачивает обычный обработчик в случае ошибки. Особенно интересно создавать подобные вещи, когда у вас больше одного параметра. Типы возвращаемых значений в этом случае немного сложнее.
Скачивание файлов практически не отличается. Нужно лишь заменить upload на download.
По сути функция удаления не отличается от заливки и скачивания. Очень удобно, что у нас есть тип enum, который может принимать дополнительные объекты. Применение enum в качестве типа возвращаемых данных для обработчика дает неплохое преимущество. Вы пишете код, используете тип возвращаемых данных enum, присоединяете к нему какие-то объекты. Чем это хорошо? Единственный способ работы с enum — применение switch, а это подразумевает, что вы покрываете все вероятные сценарии в Swift. Таким образом, используя enum, вы автоматически вынуждаете делать обработку большинства возможных событий.
Общие правила для составления URL
Правила, общие для всех ресурсов:
Корневой каталог Диска может быть указан как явно, так и неявно – пути disk:/foo и /foo указывают на одну и ту же папку.
WebDAV vs. REST
Наверное, многие из вас уже задались вопросом, в чем же разница между WebDAV и REST и каковы преимущества последнего? На первый взгляд разницы нет никакой: и там и там можно заливать и скачивать файлы, создавать папки, перемещать объекты, переносить их в корзину и удалять окончательно, создавать списки и т. д.
В общем, основная функциональность полностью совпадает. Если сравнивать работу с публичными файлами, то через WebDAV вы можете делать файлы публичными и снова делать их приватными. С папками то же самое. То есть вы можете получить ссылку на файл или папку, а позже сделать ее недействительной. REST API добавляет к этому новую функциональность.
Например, вы можете просмотреть метаданные публичных файлов. Имея лишь ссылку на файл, одним запросом к API вы сможете узнать его размер и имя. Если это папка, можно даже просмотреть структуру ее содержимого. И конечно, все можно сохранять к себе на Диск. Это был один из самых популярных фичереквестов после выпуска наших SDK. И вот наконец мы это реализовали.
В REST API появилась поддержка работы с корзиной. Теперь посмотреть содержание корзины, очистить ее или восстановить нужные файлы можно не только через веб-интерфейс.
Когда вы работаете через OAuth, все, что у вас есть от пользователя, — это токен. Но узнать побольше о пользователе иногда бывает полезно: какой у него логин, e-mail и т. д. Получить эти данные можно через отдельный API, описание которого тут. С помощью этого API можно получить гораздо больше информации, чем через WebDAV.
Общие правила для составления URL
Правила, общие для всех ресурсов:
Корневой каталог Диска может быть указан как явно, так и неявно – пути disk:/foo и /foo указывают на одну и ту же папку.
General rules for forming a URL
Rules common to all resources:
The Yandex.Disk root directory can be set directly or indirectly: the paths disk:/foo and /foo point to the same folder.
Что нового появилось в AIMP
Getting OAuth tokens
Yandex.Disk uses OAuth tokens to authorize applications. Each access token allows a specific application to access the data of a specific user.
In order to use the OAuth protocol with Yandex.Disk, you need to register your application. When registering an application that uses Yandex.Disk, select the appropriate access rights (in addition to accessing users' files, you can use the application folder):
After registration, the application will be able to get OAuth tokens for accessing user data on Yandex.Disk.
The access token that is obtained must be passed in the Authorization header for every call to the Yandex.Disk API, indicating the token type before the token value. Example for this header:
Корректные заголовки Accept и Content-Type : API Диска поддерживает только один MIME-тип, application/json . Любое другое значение приведет к ошибке формата данных.
URL, составленный согласно требованиям к нужному запросу.
OAuth-токен, выданный вашему приложению для доступа к Диску определенного пользователя. Для запросов, которые не требуют авторизации, это указано явно.
Basic-аутентификация
Для получения доступа создайте пароль приложения с типом Файлы и укажите этот пароль в настройках сервиса, который будет использовать API Яндекс.Диска.
Для Basic-аутентификации каждый запрос приложения к Яндекс.Диску должен содержать заголовок Authorization следующего вида:
Токен доступа здесь — это строка вида <логин>:<пароль> в кодировке base64.
Getting OAuth tokens
Yandex.Disk uses OAuth tokens to authorize applications. Each access token allows a specific application to access the data of a specific user.
In order to use the OAuth protocol with Yandex.Disk, you need to register your application. When registering an application that uses Yandex.Disk, select the appropriate access rights (in addition to accessing users' files, you can use the application folder):
After registration, the application will be able to get OAuth tokens for accessing user data on Yandex.Disk.
The access token that is obtained must be passed in the Authorization header for every call to the Yandex.Disk API, indicating the token type before the token value. Example for this header:
A successful API call requires:
Correct Accept and Content-Type headers: the Yandex.Disk API only supports the application/json MIME type. Any other value will cause a data format error.
A URL formed to meet the requirements of the request.
The OAuth token issued to your application for accessing a specific user's data on Yandex.Disk. For requests that do not require authorization, this is specified explicitly.
Basic-аутентификация
Для получения доступа создайте пароль приложения с типом Файлы и укажите этот пароль в настройках сервиса, который будет использовать API Яндекс.Диска.
Для Basic-аутентификации каждый запрос приложения к Яндекс.Диску должен содержать заголовок Authorization следующего вида:
Токен доступа здесь — это строка вида : в кодировке base64.
Прослушивание подкастов
Появился в AIMP и плагин для подписки на подкасты. Например, ссылки на них можно получить с этого адреса. Находим любимый канал, ищем кнопку подписаться и копируем с нее ссылку. Вот пример.
Затем нажимаем правую клавишу мыши и копируем ссылку.
А вот пример ссылки на подкаст Маяка по этой ссылке.
Плеер AIMP произвел очень хорошее впечатление. Никаких сбоев или непонятностей за время использования не обнаружено. Приложение бесплатно, рекламы нет. Не даром он входит в топ лучших проигрывателей на нашем сайте.
Всем привет! Меня зовут Клеменс Ауэр, я занимаюсь разработкой десктопной версии Яндекс.Диска. Когда появился новый REST API, я был настолько впечатлен открывшимися возможностями, что в свободное время начал писать на его основе SDK для нового языка Swift. Я решил рассказать о своем опыте работы новым API и выступил с небольшим докладом о том, как просто начать с его помощью писать собственное приложение. Доклад был на английском, но по-русски я тоже говорю, хотя не так хорошо. На основе своего выступления я подготовил сегодняшний пост, с которым мне помогали мои коллеги.
Начать я хотел бы с некоторых общих вещей о Диске — скорее всего, большую часть из этого вы уже слышали. Затем я расскажу, почему же меня так впечатлил новый API и чем он отличается от WebDAV. Ну а ближе к концу я поделюсь опытом того, как начать разрабатывать под новый API, и разберу несколько примеров своего кода. Его будет совсем немного, но с новым API, чтобы заставить что-то работать, код писать практически не требуется.
Выводы
Что касается REST API, то главный совет тут — используйте Полигон, он прекрасен. На создание документации ушло немало сил, но поддерживать ее в актуальном состоянии еще сложнее. А Полигон актуален всегда. Как только выходит новая версия, вся информация о ней уже там. Кроме того, REST API достаточно быстр. Он действительно заметно быстрее WebDAV. А работать с OAuth приятно всегда. Да, это требует писать больше кода, но, скорее всего, у вас уже есть какая-нибудь имплементация, так что особого значения это не имеет. У REST API многое еще впереди. В API еще остались белые пятна, но у нас есть множество идей, реализацией которых мои коллеги активно занимаются.
Подводя итог, я хочу посоветовать заниматься разработкой через тестирование. Это сохранит вам много времени. Особенно когда вы пишете что-то вроде SDK. Гораздо легче написать небольшой тест для имплементируемой вами функции, чем пытаться вызывать ее из приложения. Просто пишите тесты, вызывайте свои функции, проверяйте результаты. В наше время даже разработка под асинхронные API не вызывает проблем. Xcode позволяет создавать асинхронные тесты: вы задаете условия и запускаете тест, а обработчик говорит, успешно ли все выполнено. Тестирование асинхронных API там устроено очень просто. Кроме того, это помогает находить баги. Ошибки делают все, и мы не исключение, поэтому мы рады каждому багрепорту. Вы можете использовать ФОС на странице API Диска. Обычно мы быстро все чиним — в зависимости от сложности и критичности проблемы, конечно.
Как живет плеер AIMP?
При установке появилась реклама и партнерская установка сервисов Яндекса. К сожалению, болезнь многих бесплатных проектов. Безжалостно снимаем галки. Яндекс.Браузер уже установлен все равно.
При первом запуске пользователя ждет пугающе пустое окно.
Начать стоит с настройки библиотеки музыки. Она делается добавлением папок с музыкой через кнопку с плюсом. Все само добавится и каталогизируется по тегам.
Интерфейс простой, легкий. Кому хочется понастальгировать по старым оранжевым кнопкам-апельсинам Аимпа, можно поменять обложку.
Из последних веяний интерфейсов появилась поддержка темной схемы. Включается автоматически или отдельной кнопкой в правом углу.
В остальном Аимп остался прежним приятным и легким (дистрибутив весит всего 11,7 Мб) плеером. Скачал и слущай!
Прослушивание музыки из облака
Для меня наиболее яркой новостью стало не появление Темной схемы, а нативная поддержка облачных хранилищ. На моем ноутбуке размер SSD составляет всего 256 Гб. Хранить музыку мне удобнее в облачном хранилище. В Aimp подключить его можно в два клика.
- Переходим во вкладку Мои облака.
- Нажимаем кнопку с плюсом.
Важно, что вводить пароль не нужно. Можно получить токен для доступа. А он выдается средствами самого облака. Вот как это выглядит при подключении к Яндекс.Диску.
Нас перебрасывает на Яндекс для авторизации. После этого можете слушать музыку на облаке столь же просто, как и с локального диска.
Поддерживаются Google, Яндекс, DropBox и другие популярные сервисы.
Авторизация приложения с помощью OAuth-токена
Приложения могут получать доступ к Дискам пользователей с помощью OAuth-токенов. Каждый токен предоставляет определенному приложению доступ к данным определенного пользователя.
При регистрации приложения, использующего API Яндекс.Диска, следует выбрать соответствующие права доступа:
После регистрации приложение сможет получать OAuth-токены для доступа к данным пользователей любым подходящим способом.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
Получение и использование OAuth-токенов подробно описано в документации OAuth-сервиса Яндекса.
Для доступа к данным какого-либо пользователя приложение должно быть авторизовано посредством Basic-аутентификации или OAuth-токена.
Получение OAuth-токенов
Яндекс.Диск авторизует приложения с помощью OAuth-токенов. Каждый токен предоставляет определенному приложению доступ к данным определенного пользователя.
Чтобы использовать протокол OAuth при работе с сервисом Яндекса, вам нужно зарегистрировать свое приложение. При регистрации приложения, использующего Яндекс.Диск, выберите нужные права доступа (помимо доступа к файлам пользователя можно пользоваться папкой приложения):
После регистрации приложение сможет получать OAuth-токены для доступа к данным пользователей на Диске.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
Для успешного вызова API необходимы:
Корректные заголовки Accept и Content-Type : API Диска поддерживает только один MIME-тип, application/json . Любое другое значение приведет к ошибке формата данных.
URL, составленный согласно требованиям к нужному запросу.
OAuth-токен, выданный вашему приложению для доступа к Диску определенного пользователя. Для запросов, которые не требуют авторизации, это указано явно.
Авторизация приложения с помощью OAuth-токена
Приложения могут получать доступ к Дискам пользователей с помощью OAuth-токенов. Каждый токен предоставляет определенному приложению доступ к данным определенного пользователя.
При регистрации приложения, использующего API Яндекс.Диска, следует выбрать соответствующие права доступа:
После регистрации приложение сможет получать OAuth-токены для доступа к данным пользователей любым подходящим способом.
Полученный токен следует передавать в заголовке Authorization при каждом вызове API Диска, указывая тип токена перед его значением. Пример такого заголовка:
Получение и использование OAuth-токенов подробно описано в документации OAuth-сервиса Яндекса.
Мне понадобился легкий плеер для компьютера, который мог бы проигрывать музыку из облачного хранилища Google или Яндекс. Случайно заметил, что популярный, и даже легендарный, AIMP еще жив. Решил посмотреть, как он изменился, и был приятно удивлен.
General rules for forming a URL
Rules common to all resources:
The Yandex.Disk root directory can be set directly or indirectly: the paths disk:/foo and /foo point to the same folder.
Читайте также: