2012-05-25 79 views
1

this文檔。可用。所以我用如何使用C#的Youtube API登錄程序?

YouTubeRequestSettings settings = new YouTubeRequestSettings("Appname","devkey", textBox1.Text, textBox2.Text); 
request = new YouTubeRequest(settings); 

Video newVideo = new Video(); 
newVideo.Title = "Test"; 
newVideo.Tags.Add(new MediaCategory("Animals", YouTubeNameTable.CategorySchema)); 
newVideo.Description = "Testing Testing Testing"; 
newVideo.YouTubeEntry.Private = false; 
newVideo.YouTubeEntry.MediaSource = new MediaFileSource("C:\\BabyBoyScenesBackground_PAL.wmv", "video/x-ms-wmv"); 
try 
{ 
    request.Upload(newVideo); 
} 
catch (Exception ccc) 
{ 
    MessageBox.Show(ccc.ToString()); 
} 

只是爲了獲得401未經授權。我需要改變什麼。如果你問,我發現的所有來源都是過時的,或者人們沒有處理這個問題。

對於「Appname」,「devkey」,我使用了適當的值以及pw和用戶名。

+0

您是否缺少'YouTubeRequestSettings'中的clientId參數或者此方法是否有重載? –

+0

Google.YouTube.YouTubeRequestSettings不包含帶5個參數的構造函數,其中包含clientid。其實沒有構造函數包含clientid了。我讀過它已被棄用。 – Zurechtweiser

+0

它需要clientId參數。 http://google-gdata.googlecode.com/svn-history/r902/docs/folder56/M_Google_YouTube_YouTubeRequestSettings__ctor_2.htm – prashanth

回答

4

恐怕在這種情況下,如預期的401未經授權的錯誤,您必須提供不正確的細節。我很費力地嘗試你的代碼,它按預期工作,並上傳了視頻。您的devkey,pw或用戶名必須不正確,否則上面的代碼必須存在問題,因爲它對我來說工作正常。

但是,你應該使用一個後臺工作完成這個任務,也許是這樣的:

namespace YouTube 
{ 
    using System; 
    using System.ComponentModel; 
    using System.Windows; 

    using Google.GData.Client; 
    using Google.GData.Extensions.MediaRss; 
    using Google.GData.YouTube; 
    using Google.YouTube; 

    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private static BackgroundWorker uploader; 

     private static YouTubeRequestSettings settings; 

     static void UploaderDoWork(object sender, DoWorkEventArgs e) 
     { 
      var request = new YouTubeRequest(settings); 
      var newVideo = new Video { Title = "Test" }; 
      newVideo.Tags.Add(new MediaCategory("Animals", YouTubeNameTable.CategorySchema)); 
      newVideo.Description = "Testing Testing Testing"; 
      newVideo.YouTubeEntry.Private = true; 
      newVideo.YouTubeEntry.MediaSource = new MediaFileSource("C:\\Wildlife.wmv", "video/x-ms-wmv");    
      try 
      { 
       request.Upload(newVideo); 
      } 
      catch (Exception exception) 
      { 
       MessageBox.Show("Upload failed: " + exception.Message); 
      } 
     } 

     private void button1_Click(object sender, RoutedEventArgs e) 
     { 
      settings = new YouTubeRequestSettings(
       "app", 
       "devkey", 
       "email", 
       "password"); 
      uploader = new BackgroundWorker { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; 
      uploader.DoWork += UploaderDoWork; 
      uploader.RunWorkerCompleted += delegate { MessageBox.Show("Upload completed!"); }; 
      uploader.RunWorkerAsync(); 
      MessageBox.Show("Initiated upload..."); 
     } 
    } 
} 

希望你整理出來!

+0

好的,我會仔細檢查它的全部 – Zurechtweiser

+0

它現在有效。無論不工作的原因是什麼。 – Zurechtweiser

+0

一個補充:嘗試通過替換爲「var request = new YouTubeRequest(settings); var newVideo = new Video(); newVideo.VideoId =」59y0rPq79CM「; 評論c = new Comment() ; c.Content = 「有趣」; 嘗試 { request.AddComment(newVideo,C); } 趕上(例外FFF) { MessageBox.Show(fff.ToString()); 擲; }「評論沒有顯示出來。想法? – Zurechtweiser