google-api-java-client:setForMine(true)导致invalidSearchFilter错误

时间:2015-04-15 15:51:33

标签: java youtube google-api-java-client

如果我打电话

YouTube.Search.List.setForMine(true);

然后我收到以下错误,即使使用YouTube.Search.List.setType("video")也要求调用YouTube.Search.List.setForMine(true)

There was a service error: 400 : Invalid combination of search filters and/or restrictions.
hu.pocketguide.kmlvideo.youtube.exception.YouTubeException: Service error.
    at com.google.api.services.samples.youtube.cmdline.data.PgFindByKmlId.findVideosByKmlId(PgFindByKmlId.java:107)
    at com.google.api.services.samples.youtube.cmdline.data.PgFindByKmlId.main(PgFindByKmlId.java:62)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "youtube.search",
    "location" : "",
    "locationType" : "parameter",
    "message" : "Invalid combination of search filters and/or restrictions.",
    "reason" : "invalidSearchFilter"
  } ],
  "message" : "Invalid combination of search filters and/or restrictions."
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:312)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1049)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
    at com.google.api.services.samples.youtube.cmdline.data.PgFindByKmlId.findVideosByKmlId(PgFindByKmlId.java:100)
    ... 7 more

尝试中的相同查询! https://developers.google.com/youtube/v3/docs/search/list部分的作品。

有人可以告诉我如何使用google-api-java-client过滤标签(关键字)来列出我自己的“不公开”视频吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我发现了问题。我无法将适当的凭据对象传递给new YouTube.Builder(...)。通过以下初始化,它可以工作:

List<String> scopes = Lists.newArrayList("https://www.googleapis.com/auth/youtube.readonly");
Credential credential = Auth.authorize(scopes, "mycredentialdatastore");
            youtube = new YouTube.Builder(
                    Auth.HTTP_TRANSPORT,
                    Auth.JSON_FACTORY,
                    credential).setApplicationName("mysample").build();

仍然,我发现错误消息具有误导性。