我发送以下请求,我得到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); ...