Я не могу говорить с разрешениями, необходимыми для API подписей, в частности, но в общем, да, вы можете использовать OAuth для своего приложения один раз, используя свою собственную учетную запись, и использовать токены доступа и обновления, чтобы сделать следующий OAuth'd запросы к API. Вы можете найти подробную информацию о генерации токенов здесь:
https://developers.google.com/youtube/v3/guides/auth/server-side-web-apps#Obtaining_Access_Tokens
Чтобы выполнить действия вручную (к счастью, вам нужно только сделать это один раз):
- Если доступ уже предоставляется на приложения, его необходимо удалить, чтобы можно было установить новые учетные данные. Перейдите к https://security.google.com/settings/security/permissions (во время входа в свою учетную запись) и удалите доступ к приложению. Если идентификатор клиента или секретное изменение (или вам необходимо создать), найдите их в https://console.developers.google.com в Менеджере API.
Чтобы предоставить доступ и получить временный код, введите этот URL в браузере:
https://accounts.google.com/o/oauth2/auth?
client_id=<client_id>&
redirect_uri=http://www.google.com&
scope=https://www.googleapis.com/auth/youtube.force-ssl&
response_type=code&
access_type=offline&
approval_prompt=force
Следуйте подсказкам, чтобы предоставить доступ к приложению.
- Это перенаправит на google.com параметр
code
(например, https://www.google.com/?code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFf&gws_rd=ssl#). Сохраните код.
Отправить запрос POST (например, с помощью Postman Chrome plugin), чтобы https://accounts.google.com/o/oauth2/token следующее в теле запроса:
code=<code>&
client_id=<client_id>&
client_secret=<client_secret>&
redirect_uri=http://www.google.com&
grant_type=authorization_code
- Ответ будет содержать как маркер доступа и обновить маркер. Сохраните оба, но особенно токен обновления (поскольку токен доступа истечет через 1 час).
Вы можете использовать маркер доступа, чтобы отправить запрос OAuth'd вручную, следуя один из вариантов here, по сути:
curl -H "Authorization: Bearer ACCESS_TOKEN" https://www.googleapis.com/youtube/v3/captions/<id>
или
curl https://www.googleapis.com/youtube/v3/captions/<id>?access_token=ACCESS_TOKEN
(Когда я попытался второй вариант для титров, однако, я получил сообщение: «Тоник OAuth был получен в строке запроса, который этот API запрещает для форматов ответов, отличных от JSON или XML. По возможности попробуйте отправить токен OAuth в Autho rization header вместо. ")
Вы также можете использовать токен обновления в своем коде для создания учетных данных, необходимых при создании объекта YouTube. В Java, это выглядит следующим образом:
String clientId = <your client ID>
String clientSecret = <your client secret>
String refreshToken = <refresh token>
HttpTransport transport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(transport)
.setJsonFactory(jsonFactory)
.setClientSecrets(clientId, clientSecret)
.build()
.setRefreshToken(refreshToken);
try {
credential.refreshToken();
} catch (IOException e) {
e.printStackTrace();
}
youtube = new YouTube.Builder(transport, jsonFactory, credential).build();
Я полагаю, что вы можете сделать что-то подобное в Python с API Client Libraries, хотя я не пробовал Python.
У меня также есть эта проблема. Меня действительно раздражает, что API позволяет вам делать практически все остальное через Key, но затем спонтанно ожидает, что пользователи также будут загружать OAuth2-Creds только потому, что по какой-то причине их ужасным машинным переводам требуются номер вашей водительской лицензии, паспорт, 3 последних телефонных счета, доказательство вашего адреса, фотографии высокого разрешения. Кстати, страница API, похоже, не упоминает об этом повышенном требовании безопасности ... – 1owk3y