Я хотел бы использовать API YouTube для загрузки видео на корпоративную учетную запись в неинтерактивной программе. Я пытался добиться загрузки без запроса аутентификации и авторизации (поскольку нет интерактивного пользователя). Буду признателен, если кто-то может подтвердить следующие утверждения:Неинтерактивный OAuth для загрузок API YouTube
Невозможно использовать Simple API Access для загрузки видео.
Для OAuth невозможно использовать «Используйте учетные записи службы, чтобы звонить API Google от имени вашего приложения, а не конечного пользователя». Как описано в Justin Smith's Blog post. Это было бы моим желаемым решением. Вот код, с которым я пытался это сделать. Он выполняет, но всегда возвращается как «несанкционированный» (401):
public async Task AnnounceAsync(Recording recording) { const string emailAddress = "xxxxxxx.gserviceaccount.com"; const string keyFile = @"C:\Temp\xxxxxxx-privatekey.p12"; var key = new X509Certificate2(keyFile, "notasecret", X509KeyStorageFlags.Exportable); var client = new AssertionFlowClient(GoogleAuthenticationServer.Description, key) { ServiceAccountId = emailAddress, Scope = YoutubeService.Scopes.Youtube.GetStringValue() }; var auth = new OAuth2Authenticator<AssertionFlowClient>(client, AssertionFlowClient.GetState); var youtube = new YoutubeService(new BaseClientService.Initializer {Authenticator = auth}); var video = new Video { Snippet = new VideoSnippet { Title = recording.Title, Description = recording.Description, CategoryId = "22" }, Status = new VideoStatus { PrivacyStatus = "public", } }; using (var fileStream = new FileStream(recording.Path, FileMode.Open)) { var videosInsertRequest = youtube.Videos.Insert(video, "snippet,status", fileStream, "video/*"); videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged; videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived; await Task.Run(() => videosInsertRequest.Upload()); } }
Итак, я пришел к выводу, что мне нужно использовать методологию доступа API «Installed Application», чтобы пройти через процесс авторизации OAuth в интерактивном режиме по крайней мере один раз, сохранить токен обновления, а затем использовать этот токен обновления в будущем для получения новых токенов доступа? Я знаю, что могу сделать эту работу, но это кажется неудобным. Есть ли какие-либо проблемы, о которых нужно знать, если я пойду по этой дороге?
Дальнейшие вопросы:
- Любая будущая поддержка спланированы, чтобы учетная запись службы OAuth использовать с API YouTube?
- Могла ли моя программа использовать функцию «Мобильная загрузка» на email videos на свой аккаунт YouTube?
Заранее благодарим за ввод.