【问题标题】:How can i get all uploaded videos from a Youtube channel API v3 in java如何从 Java 中的 Youtube 频道 API v3 获取所有上传的视频
【发布时间】:2016-01-23 05:21:12
【问题描述】:

如何从某个频道获取所有上传的视频? 我知道 GET 请求是 https://www.googleapis.com/youtube/v3/search?key=key&channelId=UC-9-kyTW8ZkZNDHQJ6FgpwQ&part=snippet,id&order=date&maxResults=20

但我想使用 Java Youtube APi (v3) 当我尝试这样做时

    try {
        youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() {
            @Override
            public void initialize(HttpRequest arg0) throws IOException {}
        }).setApplicationName("youtube-cmdline-myuploads-sample").build();

        YouTube.Channels.List channelRequest = youtube.channels().list("contentDetails");
        channelRequest.setId("UC-9-kyTW8ZkZNDHQJ6FgpwQ"); //youtube channel id
        channelRequest.setKey(key);
        channelRequest.setFields("items/contentDetails,nextPageToken,pageInfo");
        ChannelListResponse channelResult = channelRequest.execute();

        List<Channel> channelsList = channelResult.getItems();

        if (channelsList != null) {
            String uploadPlaylistId =
                    channelsList.get(0).getContentDetails().getRelatedPlaylists().getUploads();
            System.out.println(uploadPlaylistId);
            List<PlaylistItem> playlistItemList = new ArrayList<PlaylistItem>();
            YouTube.PlaylistItems.List playlistItemRequest =
                    youtube.playlistItems().list("id,contentDetails,snippet");
            playlistItemRequest.setPlaylistId(uploadPlaylistId);
            playlistItemRequest.setFields(
                    "items(contentDetails/videoId,snippet/title,snippet/publishedAt),nextPageToken,pageInfo");

            String nextToken = "";
            do {
                playlistItemRequest.setPageToken(nextToken);
                PlaylistItemListResponse playlistItemResult = playlistItemRequest.execute();

                playlistItemList.addAll(playlistItemResult.getItems());

                nextToken = playlistItemResult.getNextPageToken();
            } while (nextToken != null);

            printVideos(playlistItemList.size(), playlistItemList.iterator());
        }

    } catch (GoogleJsonResponseException e) {
        e.printStackTrace();
        System.err.println("There was a service error: " + e.getDetails().getCode() + " : "
                + e.getDetails().getMessage());

    } catch (Throwable t) {
        t.printStackTrace();
    }
}

我收到 forbidden 403 。我做错了什么?

    "code" : 403,
    "errors" : [ {
        "domain" : "usageLimits",
        "message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use    requires signup.",
        "reason" : "dailyLimitExceededUnreg",
        "extendedHelp" : "https://code.google.com/apis/console"
    } ],
    "message" : "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}

【问题讨论】:

  • 请发布错误日志
  • 您是否在 YouTube 上注册了开发 ID?错误消息是“已超出未经验证使用的每日限制。继续使用需要注册。”

标签: java youtube youtube-api


【解决方案1】:

该错误似乎非常具有描述性。您没有验证您的请求,因此从 Youtube 的角度来看,您在未登录的情况下过于频繁地尝试调用此 API。

如果您使用有效 Youtube 帐户的真实凭据签署您的请求,您应该没问题。

【讨论】:

  • 我认为问题的要点是 - 我有一个 API 密钥,如何使用它而不是 OAuth
猜你喜欢
  • 2016-03-12
  • 2017-11-21
  • 2016-08-26
  • 2016-08-05
  • 2021-03-13
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
相关资源
最近更新 更多