使用java在Youtube上上传视频时出现NoLinkedYoutubeAccount错误401

时间:2012-12-05 14:56:47

标签: java youtube-api google-api-java-client

我想从我的java网络应用程序上传YouTube上的视频: 我希望收到(服务器端)我的authToken和表单操作,以便上传视频。

  • 我创建了一个新的google / 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);

非常感谢, 艾伯特三世

3 个答案:

答案 0 :(得分:4)

如错误所示,您尚未将帐户凭据与youtube相关联。

你可以解决这个问题: - 使用www.youtube.com上的应用程序中使用的帐户进行连接 - 尝试上传视频 - 当youtube询问时设置姓名和姓氏,并处理链接到gmail。

完成!我在使用我的应用程序使用Firefox上传视频之前尝试过。

答案 1 :(得分:3)

您无法将YouTube频道与服务帐户相关联,并且您尝试在服务帐户的上下文中进行上传。

您应该使用您实际要上传到的帐户登录浏览器,而不是使用服务帐户,而是通过OAuth 2流程并授权访问权限。

我了解使用服务帐户的好处,但目前尚未设置YouTube与他们合作。

答案 2 :(得分:2)

如果您创建了YouTube帐户,并且已经链接到您的Google帐户,请确保在YouTube中创建自己的频道。

这将允许API将视频上传到您创建的频道。

希望它有所帮助。