2012-12-05 60 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上传视频之前尝试过。