2013-05-28 4 views
1

Я хотел бы использовать API YouTube для загрузки видео на корпоративную учетную запись в неинтерактивной программе. Я пытался добиться загрузки без запроса аутентификации и авторизации (поскольку нет интерактивного пользователя). Буду признателен, если кто-то может подтвердить следующие утверждения:Неинтерактивный OAuth для загрузок API YouTube

  1. Невозможно использовать Simple API Access для загрузки видео.

  2. Для 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 в интерактивном режиме по крайней мере один раз, сохранить токен обновления, а затем использовать этот токен обновления в будущем для получения новых токенов доступа? Я знаю, что могу сделать эту работу, но это кажется неудобным. Есть ли какие-либо проблемы, о которых нужно знать, если я пойду по этой дороге?

Дальнейшие вопросы:

  1. Любая будущая поддержка спланированы, чтобы учетная запись службы OAuth использовать с API YouTube?
  2. Могла ли моя программа использовать функцию «Мобильная загрузка» на email videos на свой аккаунт YouTube?

Заранее благодарим за ввод.

ответ

1

В настоящий момент вы не можете использовать учетные записи служб. Из дока:

https://developers.google.com/youtube/v3/docs/errors

ошибки/несанкционированном/youtubeSignupRequired

Эта ошибка обычно наблюдается, если вы пытаетесь использовать OAuth 2.0 Service поток счета. YouTube не поддерживает учетные записи службы, и если вы попытаетесь выполнить аутентификацию с использованием учетной записи службы, вы получите эту ошибку.

Приложение YouTube API блоге:

http://apiblog.youtube.com/2011/10/introducing-google-account-support-and.html

введение поддержки аккаунта Google также обсуждает ошибки youtubeSignupRequired более подробно. Хотя сообщение в блоге объясняет ошибку для версии API версии 2.1, значение этой ошибки по-прежнему применимо.

«мобильные загрузки», чтобы отправить видео, кажется, работает

0

Учетные записи служб являются двигающейся целью. Но вы правы, если вы можете получить токен обновления, тогда вам должно быть хорошо идти.

Смежные вопросы