Youtube错误400丢失婴儿车api v3



我发送以下请求,我得到error 400 missing params,但当我通过get手动发送请求时,它工作正常:

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("id,snippet");
        channelRequest.setKey("key");
        //channelRequest.setFields("items/contentDetails,nextPageToken,pageInfo");
        channelRequest.set("channelId", "UC-9-kyTW8ZkZNDHQJ6FgpwQ");
        System.out.println(channelRequest.toString());
        ChannelListResponse channelResult = channelRequest.execute(); //error here
        List<Channel> channelsList = channelResult.getItems();
...

,但由于某些原因,这是有效的:

https://www.googleapis.com/youtube/v3/search?key=key&channelId=UC-9-kyTW8ZkZNDHQJ6FgpwQ&part=snippet,id&order=date&maxResults=20

详细错误:

    {
  "code" : 400,
  "errors" : [ {
    "domain" : "youtube.parameter",
    "location" : "",
    "locationType" : "parameter",
    "message" : "No filter selected.",
    "reason" : "missingRequiredParameter"
  } ],
  "message" : "No filter selected."
}

您使用了错误的类。这不是一个频道,这是一个搜索列表,根据你提到的url工作。

YouTube.Search.List searchRequest = youtube.search().list("id,snippet");

您可以这样尝试:

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("id,snippet");
        channelRequest.setFields("items/contentDetails,nextPageToken,pageInfo");
        channelRequest.setId("UC-9-kyTW8ZkZNDHQJ6FgpwQ");
        // probably needed:
        // channelRequest.setMine(true);
        // or
        // channelRequest.setForUsername("userwithaccess");
        System.out.println(channelRequest.toString());
        ChannelListResponse channelResult = channelRequest.execute(); //error here
        List<Channel> channelsList = channelResult.getItems();

查看本文档:https://developers.google.com/resources/api-libraries/documentation/youtube/v3/java/latest/com/google/api/services/youtube/YouTube.Channels.List.html#setId%28java.lang.String%29

注意上面的评论,因为我目前仅限于...setMine(true); ...

最新更新