我需要将视频上传到YouTube到特定的YouTube帐户。因此,我需要身份验证我正在使用Java Google Lib。代码看起来像这样:
Credential credential = new GoogleCredential.Builder()
.setTransport(new ApacheHttpTransport())
.setJsonFactory(new JacksonFactory())
.setServiceAccountId("xxx@xx-app.iam.gserviceaccount.com")
.setClientSecrets("xx@gmail.com", "xx")
.setServiceAccountPrivateKeyFromP12File(new File("xx.p12"))
.setServiceAccountScopes(scopes)
.setServiceAccountUser("xx@gmail.com")
.build();
youtube = new YouTube.Builder(credential.getTransport(), credential.getJsonFactory(), credential).setApplicationName(
"tellews-app").build();
Video returnedVideo = videoInsert.execute();
YouTube.Videos.Insert videoInsert = youtube.videos()
.insert("snippet,statistics,status", videoObjectDefiningMetadata, mediaContent);
Video returnedVideo = videoInsert.execute();
并获得错误:
IOException: 401 Unauthorized
{
"error" : "unauthorized_client",
"error_description" : "Client is unauthorized to retrieve access tokens using this method."
}
也许有人看到我做错了什么
简单。
请勿使用服务帐户 - 那不是它们的目的。
您需要获得目标YouTube帐户的访问令牌。这样做的方法是从Oauth游乐场为该帐户提供一个刷新令牌,并在需要时使用它来获取访问令牌。在没有用户干预的情况下,如何授权应用程序(Web或已安装(来列举执行此操作的步骤?(规范?(。在评论中,有一个指向YouTube视频的链接,该视频也解释了步骤。