Youtube API v3:使用服务帐户列出视频

时间:2016-02-23 13:38:37

标签: java oauth-2.0 youtube-api youtube-data-api

我正在尝试使用Google服务帐户列出YouTube Data API v3中的视频。我启动了YouTube API,创建了帐户服务,但每当我尝试从我的频道列出视频时,即使我确实上传了视频,也会显示0个视频。

我从他们的文档中运行了示例,但似乎我的凭据直接从我的服务帐户列出了视频,而不是我真正的YouTube帐户。

public void createShowSpannableStringMuscleGroup(List<MuscleGroup> muscleGroups) {

        // clears the flowlayout views
        muscle_gp_tag_flow_layout.removeAllViews();
        for (int countGroup = 0; countGroup < muscleGroups.size(); countGroup++) {
            MuscleGroup group = muscleGroups.get(countGroup);
            if (group.getName() != null && group.getName().length() > 0) {

//                inflating the textview views in flow layout
               TextView textView=new textView(context);
//set color, background for textview
              textView.setText(group.getName().toString());

//                adding views to flowlayout muscle group
                muscle_gp_tag_flow_layout.addView(mView);
            }
        }

List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube"); JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountId("youtube-****serviceaccount.com") .setServiceAccountScopes(scopes) .setServiceAccountPrivateKeyFromP12File(new File("C:\\tmp\\youtube.p12")) .build(); youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential).setApplicationName( "youtube-cmdline-uploadvideo-sample").build(); YouTube.Channels.List channelRequest = youtube.channels().list("contentDetails"); channelRequest.setMine(true); ChannelListResponse channelResult = channelRequest.execute(); List<Channel> channelsList = channelResult.getItems(); String uploadPlaylistId = channelsList.get(0).getContentDetails().getRelatedPlaylists().getUploads(); 应该是我的频道ID,但我不知道它是什么,我知道这是一个空频道。 (如果我使用我的真实身份证频道查看此处,我可以列出我的上传内容,我的服务帐户似乎无法在我的YouTube帐户中正确引用...)

1 个答案:

答案 0 :(得分:0)

您遇到的问题是您尝试在YouTube API中使用服务帐户。默认情况下,服务帐户是具有自己帐户的虚拟用户。服务帐户没有上传到其帐户的任何内容,我认为您无法上传任何内容。

通常使用Google API,您可以通过将其添加为用户或授予其权限来授予服务帐户对您帐户的访问权限。很遗憾,使用YouTube API无法做到这一点。

如果您尝试在YouTube API上使用服务帐户,通常会看到此错误。

  

未授权(401)youtubeSignupRequired

     

如果您尝试使用OAuth 2.0服务,则会出现此错误   帐户流量。 YouTube不支持服务帐户,如果您支持   尝试使用服务帐户进行身份验证,您将获得此信息   错误。

以上信息可在YouTube数据API错误文档here

中找到

您需要切换到使用Oauth2