2012-12-05 59 views
6

我想從我的Java Web應用程序上傳視頻到YouTube上: 我想接收(服務器端)我的authToken和表單動作,以便上傳視頻。NoLinkedYoutubeAccount錯誤401在Youtube上使用java上傳視頻時

  • 我創建了一個新的谷歌/ YouTube帳戶
  • 我已經創建了一個YouTube頻道在我的帳戶
  • 我創建了一個新的項目在我的谷歌API控制檯作爲服務帳戶

現在我試圖用oAuth 2.0實現我的代碼。 我有accessToken但是,當我嘗試調用服務getFormUploadToken(url,object)時,響應始終是相同的「NoLinkedYoutubeAccount錯誤401」。

我也通過谷歌支持頁面http://www.youtube.com/my_account_unlink驗證了帳戶,但它似乎確定。

有沒有人有關於這個問題的想法?

這是我的代碼:

HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); 
    JsonFactory JSON_FACTORY = new JacksonFactory(); 
    String accessToken = ""; 
    GoogleCredential credential = null; 


    credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) 
      .setJsonFactory(JSON_FACTORY) 
      .setServiceAccountId(CLIENT_EMAIL) 
      .setServiceAccountScopes("http://gdata.youtube.com") 
      .setServiceAccountPrivateKeyFromP12File(new File(PRIVATE_KEY_PATH)) 
      .build(); 
    credential.refreshToken(); 
    accessToken = credential.getAccessToken(); 


    YouTubeService service = new YouTubeService(CLIENT_ID, DEV_KEY); 
    service.setAuthSubToken(accessToken, null); 
    VideoEntry newEntry = new YouTubeMediaGroup mg = newEntry.getOrCreateMediaGroup(); 
    mg.setTitle(new MediaTitle()); 
    mg.getTitle().setPlainTextContent("My Test Movie"); 

    URL uploadUrl = new URL("http://gdata.youtube.com/action/GetUploadToken"); 
    FormUploadToken token = service.getFormUploadToken(uploadUrl, newEntry); 

非常感謝, 阿爾伯特III

回答

3

你不能用一個服務帳戶的YouTube頻道關聯,你想的環境下上傳的服務帳戶。

您應該使用您實際上傳到的帳戶登錄到瀏覽器,而不是使用服務帳戶,而是使用OAuth 2流和授權訪問。

我瞭解使用服務帳戶的好處,但YouTube目前尚未設置爲與他們合作。

+0

你好傑夫, 謝謝你的回答! 我希望登錄我的網站的用戶能夠在我的頻道上上傳視頻。 這可能嗎? 再次感謝 Albert III –

+0

請參閱http://apiblog.youtube.com/2012/02/video-uploads-from-your-sites-community.html,爲什麼你提出的建議不是一個好主意。 –

2

如果您已經創建了youtube帳戶,並且已經鏈接到您的谷歌帳戶,那麼請確保您在youtube上創建了自己的頻道。

這將允許API將視頻上傳到您創建的頻道。

希望它有幫助。

4

如錯誤所述,您尚未將帳戶憑據關聯至YouTube。

可以解決這一問題: - 嘗試上傳視頻 - - 在www.youtube.com 上的應用程序使用的帳戶連接設置姓名YouTube何時問,過程鏈接到Gmail。

完成!我在使用我的應用程序使用Firefox上傳視頻之前嘗試過。