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

alb*_*mia 6 java youtube-api google-api-java-client

我想从我的java web应用程序上传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);
Run Code Online (Sandbox Code Playgroud)

非常感谢,艾伯特三世

Jef*_*ick 3

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

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

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