Икай Лан, YouTube Developer Relations – June 2013
API YouTube используют OAuth 2.0 для авторизации запросов пользователей. Нас часто спрашивают, добавим ли мы в будущем поддержку аутентификации ClientLogin или что-то подобное в API YouTube. Однако мы официально прекратили поддержку ClientLogin с 20 апреля 2012 г. , и мы не планируем добавлять такой механизм.
Существует множество причин, по которым мы считаем, что поддержка различных потоков авторизации 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, клиентские библиотеки API Google для других языков программирования также предоставляют вспомогательные методы для управления токенами, которые могут использоваться совместно между клиентами и даже использоваться в 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 .