Икаи Лан, YouTube Developer Relations – June 2013
API YouTube используют OAuth 2.0 для авторизации запросов пользователей. Нас часто спрашивают, будем ли мы добавлять поддержку аутентификации ClientLogin или что-то подобное в API YouTube в будущем. Однако с 20 апреля 2012 года ClientLogin официально объявлен устаревшим , и добавлять такой механизм не планируется.
Существует множество причин, по которым мы считаем, что поддержка различных потоков авторизации OAuth 2.0 лучше для пользователей YouTube, чем ClientLogin . Эти потоки поддерживают варианты использования для настольных приложений, веб-приложений, собственных мобильных приложений и даже приложений, которые работают на таких устройствах, как телевизоры, которые не имеют сложных механизмов ввода, что трудно сделать с помощью ClientLogin . Кроме того, мы обнаружили, что ClientLogin вызывает больше головной боли у многих разработчиков после запуска, некоторые из которых мы описываем в нашем блоге ClientLogin #FAIL .
Использование 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 является единственным поддерживаемым методом авторизации, поскольку Analytics API не поддерживает ClientLogin.
В разделе о долгоживущих токенах доступа содержится более подробная информация о том, как создавать автономные токены, которые можно использовать для процессов на стороне сервера.
Рекомендации по идентификатору клиента и секрету клиента
Любой код, который использует один и тот же идентификатор клиента и пару секретов, может использовать одни и те же токены доступа. Лучше всего ограничить доступ к идентификатору клиента и секретам клиента кодом, который выполняется на компьютерах и устройствах в вашей организации.
Не включайте свой идентификатор клиента и секрет клиента как часть собственного кода мобильного приложения. Все разработчики, выполняющие аутентификацию OAuth 2.0 с мобильного устройства, должны использовать идентификатор клиента «Установленное приложение», который запрашивает дополнительную информацию, чтобы убедиться, что запрос исходит только от приложения, выпущенного вашей командой.
На устройствах Android вместо использования идентификатора клиента и секрета клиента ваше приложение идентифицируется с помощью комбинации имени пакета и хэша сертификата подписи. На устройствах iOS используются идентификатор пакета и идентификатор магазина приложений. Официальную документацию по получению этой информации можно найти на странице справки Google API Console .
Сервисные аккаунты не работают с API YouTube
Учетные записи служб не работают для вызовов API данных YouTube, поскольку для учетных записей служб требуется связанный канал YouTube, и вы не можете связать новые или существующие каналы с учетными записями служб. Если вы используете учетную запись службы для вызова API данных YouTube, сервер 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 .