服务器的Google身份验证

时间:2017-04-18 19:51:37

标签: java youtube-api google-oauth

我需要将视频上传到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." }

也许有人看到我做错了什么

1 个答案:

答案 0 :(得分:0)

简单。

请勿使用服务帐户 - 这不是他们的目的。

您需要获取目标YouTube帐户的访问令牌。这样做的简单方法是从Oauth Playground获取该帐户的刷新令牌,并在需要时使用它来获取访问令牌。执行此操作的步骤在How do I authorise an app (web or installed) without user intervention? (canonical ?)列举。在评论中有一个YouTube视频的链接,该视频还解释了这些步骤。