Как пройти аутентификацию для использования API YouTube из облачной функции (Python 3) - PullRequest
0 голосов
/ 01 октября 2019

Я могу успешно пройти аутентификацию по схеме, описанной здесь:

https://developers.google.com/youtube/v3/docs/videos/list?apix=true

для простого прототипа в Google Colab. Однако я не могу понять, как проходить проверку подлинности в облачной функции, поскольку нет пользователя, который мог бы завершить поток. Я уверен, что это стандартный шаблон, однако я более знаком с API GCP, и googleapiclient - новый для меня.

Я настроил учетные данные учетной записи службы с правильным доступом, но я 'Я даже не уверен, имеет ли смысл использовать их в облачной функции (возможно, хранящейся в GCS), или есть (как я надеюсь) более элегантное решение.

Любая помощь будет чрезвычайно признательна, спасибо!

1 Ответ

0 голосов
/ 28 октября 2019

Не очень знаком с API данных Youtube, однако, исходя из справки API для некоторых деталей, вам необходимо выполнить вызов как владелец видео (например, processingDetails). Это означает, что вам нужно использовать трехсторонний поток OAuth2 . Для этого вы можете:

  • Установить другую функцию, которая будет генерировать URL авторизации -> представить ее пользователю -> настроить другую функцию как redirect_uri для получения кода авторизации -> обменять ее на доступ и обновитьтокены -> хранить токен обновления в безопасном месте, где оригинальная функция может его извлечь.
  • Получить токен обновления вне облачных функций и жестко его кодировать.

Жесткое кодирование учетных данных, как правило, не рекомендуется,следовательно, лучшим вариантом будет сделать так, чтобы учетная запись службы делала запросы от имени пользователя, но это возможно только для пользователей GSuite через делегирование по всему домену . При этом после установки вы будете использовать sub претензию с адресом электронной почты от имени другого пользователя. Вы можете увидеть больше здесь (обязательно переключитесь на HTTP / REST, чтобы понять, как создается JWT, или, если вас не интересуют подробности, просто выберите Python.

...