Икай Лан, YouTube Developer Relations – June 2013
API YouTube используют OAuth 2.0 для авторизации запросов пользователей. Нас часто спрашивают, будем ли мы добавлять поддержку аутентификации ClientLogin или чего-то подобного в API YouTube в будущем. Однако мы официально объявили ClientLogin устаревшим с 20 апреля 2012 года , и планов по добавлению такого механизма нет.
Существует множество причин, по которым мы считаем, что поддержка различных потоков авторизации OAuth 2.0 лучше для пользователей YouTube, чем ClientLogin . Эти потоки поддерживают сценарии использования для настольных приложений, веб-приложений, мобильных приложений и даже приложений, работающих на таких устройствах, как телевизоры, которые не имеют сложных механизмов ввода, что сложно реализовать с помощью ClientLogin . Кроме того, мы обнаружили, что ClientLogin доставляет больше проблем многим разработчикам после запуска.
Использование OAuth 2.0 для автономных скриптов на стороне сервера.
Многие разработчики используют ClientLogin для авторизации скриптов командной строки, которые запускаются на серверах без браузера. В случае с OAuth 2.0 браузер почти всегда будет задействован — за исключением случаев, когда вы работаете над приложением для Android, которое использует Google Play Services для получения токенов через GoogleAuthUtil.
В веб-интерфейсе веб-сайт, желающий выполнять аутентифицированные API-запросы от имени пользователя, должен перенаправить пользователя на страницу аутентификации google.com где объясняется, к чему пытается получить доступ приложение. Затем веб-приложение получает токен, который использует для выполнения API-запросов. Пользователь может в любое время отозвать доступ приложения, используя страницу connected apps and sites .
Наши примеры кода на Python демонстрируют, как скрипты командной строки могут запускать браузер и выполнять вызовы API из окна терминала, создавать локальный сервер для прослушивания кода после перенаправления авторизации и автоматически сохранять токен для будущих вызовов API. Видео, демонстрирующее это в действии, представлено ниже:
Используемый токен представляет собой строку ASCII. Если это offline -токен, он является переносимым . Используя полученный токен, вы сможете запустить скрипт на своем компьютере, а затем скопировать и использовать код на удаленном сервере без графического интерфейса, при условии, что код создаст экземпляр клиента OAuth 2.0 с тем же идентификатором клиента и секретом. Помимо Python, клиентские библиотеки Google API для других языков программирования также предоставляют вспомогательные методы для управления токенами, которые могут использоваться совместно клиентами и даже применяться в низкоуровневых библиотеках HTTP непосредственно в заголовке клиента или в качестве параметра URL .
Несколько примеров серверных скриптов, использующих офлайн-токены:
- Демон, который отслеживает каталог на предмет появления новых видеороликов для автоматической загрузки на YouTube.
- Задание cron, которое ежедневно обновляет плейлисты новым контентом.
- Скрипт, который отслеживает видеоданные через API YouTube Analytics и уведомляет администраторов канала о определенных событиях, таких как превышение лимита общего времени просмотра. Обратите внимание, что в данном случае единственным поддерживаемым методом авторизации является OAuth 2.0, поскольку API Analytics не поддерживает ClientLogin.
В разделе, посвященном долговременным токенам доступа, более подробно описано, как генерировать офлайн-токены, которые можно использовать для серверных процессов.
Рекомендации по использованию идентификаторов клиентов и секретных ключей клиентов.
Любой код, использующий одну и ту же пару идентификатора клиента и секретного ключа, может применять одни и те же токены доступа. Лучше всего ограничить доступ к идентификатору клиента и секретным ключам только для кода, работающего на машинах и устройствах внутри вашей организации.
Не включайте свой идентификатор клиента и секретный ключ клиента в код ваших нативных мобильных приложений. Все разработчики, использующие аутентификацию OAuth 2.0 с мобильных устройств, должны использовать идентификатор клиента «Установленное приложение», который запрашивает дополнительную информацию для проверки того, что запрос поступает только от приложения, выпущенного вашей командой.

На устройствах Android вместо идентификатора клиента и секретного ключа ваше приложение идентифицируется с помощью комбинации имени пакета и хеша сертификата подписи. На устройствах iOS используются идентификатор пакета и идентификатор магазина приложений. Официальную документацию по получению этой информации можно найти на странице справки Google Cloud console .
Сервисные аккаунты не работают с API YouTube.
Сервисные учетные записи не работают для вызовов YouTube Data API, поскольку для сервисных учетных записей требуется связанный канал YouTube, а с сервисными учетными записями нельзя связывать новые или существующие каналы. Если вы используете сервисную учетную запись для вызова YouTube Data API, сервер API вернет ошибку с типом ошибки unauthorized и причиной youtubeSignupRequired .
Офлайн/долгосрочный доступ к API YouTube
В OAuth 2.0 используются краткосрочные и долгосрочные токены. Для разовых операций наилучшим вариантом являются краткосрочные токены доступа . Срок действия этих токенов истекает вскоре после их выдачи. Для длительных задач может потребоваться получение токена обновления , который используется для получения краткосрочных токенов доступа.
Чтобы гарантировать, что ваше приложение получит долговременный токен обновления, а не кратковременный токен доступа, используйте процесс "Установленное приложение" при создании идентификатора клиента и выберите Other для значения "Тип установленного приложения":

Для этого варианта использования рекомендуется использовать поток "Установленное приложение". Если вам нужен долговременный доступ к API YouTube в веб-приложении, вы можете получить его, установив параметр access_type в offline и параметр approval_prompt в force в первоначальном запросе авторизации или в конфигурации вашего клиента . Некоторые клиентские библиотеки управляют получением и обновлением токенов доступа. Если вас интересует написание собственного кода авторизации, мы опубликовали статью в блоге Google Code , которую вы можете использовать в качестве основы для своего кода.
Использование OAuth 2.0 с телефонами, планшетами и другими устройствами.
При разработке Android-приложений разработчики могут использовать Google Play services для обработки данных авторизации. Сервисы Google Play предлагают стандартный процесс авторизации для всех API Google , включая API для платформы YouTube. Такой подход обеспечит гораздо лучший пользовательский опыт для вашего Android-приложения, чем пользовательская аутентификация с использованием ClientLogin .

На устройствах iOS Google предлагает два варианта:
- Google+ Platform for iOS , которая интегрирует авторизацию в продуктах Google, а также предоставляет доступ к социальным функциям.
- gtm-oauth2 toolkit , который предоставляет UIWebView для авторизации и управляет токенами.
Для устройств, предназначенных для использования в качестве «второго экрана», или таких устройств, как телевизоры, без удобных механизмов ввода, предпочтительным подходом является OAuth 2.0 для устройств . OAuth 2.0 для устройств работает следующим образом: при необходимости авторизации пользователю предоставляется уникальный код. В этот момент пользователям предлагается перейти по адресу http://google.com/device на другом устройстве, например, на ноутбуке или телефоне, и ввести уникальный код. Приложение отобразит экран, который будет выглядеть примерно так:

Пока пользователь вводит код на другом устройстве, приложение периодически проверяет, был ли код введен. После ввода кода приложение получает токен для выполнения вызовов API. Чтобы увидеть это в действии, посмотрите демонстрацию , которую можно запустить на любом устройстве с доступом в Интернет. Сам API является платформенно-независимым, что делает его полезным для устройств, не имеющих возможности отображения веб-страниц. Мы разместили пример кода на Python для демонстрации, который можно использовать в качестве примера.
Краткое содержание
Авторизация OAuth 2.0 обеспечивает гибкость для разработчиков, которым требуется авторизация через YouTube. Разработчики, знакомые с ClientLogin могут обнаружить, что настройка их приложений для использования OAuth 2.0 требует немного больше усилий на начальном этапе, но после переноса приложения, использующие OAuth 2.0, предлагают большую гибкость, безопасность и удобство использования на различных платформах для конечных пользователей.
Если у вас возникнут дополнительные вопросы об OAuth 2.0 или о каких-либо примерах в этой статье, пожалуйста, не стесняйтесь задавать их, используя тег youtube-api на StackOverflow .