403:未经验证的使用的每日限制超过youtube api v3 java

时间:2017-11-14 11:06:00

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

我知道这个问题已被多次询问,但我找不到一个为我工作的人。

基本上我正在尝试获取youtube视频基本信息,我得到了正确的结果但是当我触发获取该视频的评论时,错误弹出说:

  

出现服务错误:403:超出未经身份验证的使用的每日限制。继续使用需要注册。

我的代码:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter;
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
  @Override
  protected RequestMappingHandlerAdapter createRequestMappingHandlerAdapter() {
    return new XXXXRequestMappingHandlerAdapter();
  }
}

仅供参考:到目前为止,我所遇到的很多问题都在谈论添加public String getyoutubeitemfull_details(String URI) throws SQLException, IOException{ try { YouTube youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, new HttpRequestInitializer() { @Override public void initialize(HttpRequest request) throws IOException { } }).setApplicationName("APP_ID").build(); String apiKey = "API Key"; YouTube.Videos.List listVideosRequest = youtube.videos().list("statistics"); listVideosRequest.setId("qUvPzjSWMSM"); listVideosRequest.setKey(apiKey); VideoListResponse listResponse = listVideosRequest.execute(); Video video = listResponse.getItems().get(0); BigInteger viewCount = video.getStatistics().getViewCount(); BigInteger Likes = video.getStatistics().getLikeCount(); BigInteger DisLikes = video.getStatistics().getDislikeCount(); BigInteger Comments = video.getStatistics().getCommentCount(); System.out.println("[View Count] " + viewCount); System.out.println("[Likes] " + Likes); System.out.println("[Dislikes] " + DisLikes); System.out.println("[Comments] " + Comments); CommentThreadListResponse videoCommentsListResponse = youtube.commentThreads() .list("snippet").setVideoId("qUvPzjSWMSM").setMaxResults(50l).setTextFormat("plainText").execute(); List<CommentThread> videoComments = videoCommentsListResponse.getItems(); for (CommentThread videoComment : videoComments) { CommentSnippet snippet = videoComment.getSnippet().getTopLevelComment().getSnippet(); System.out.println(" - Author: " + snippet.getAuthorDisplayName()); System.out.println(" - Comment: " + snippet.getTextDisplay()); System.out.println("\n-------------------------------------------------------------\n"); } } catch (GoogleJsonResponseException e) { System.err.println("There was a service error: " + e.getDetails().getCode() + " : " + e.getDetails().getMessage()); } catch (IOException e) { System.err.println("There was an IO error: " + e.getCause() + " : " + e.getMessage()); } catch (Throwable t) { t.printStackTrace(); } return null; } 我做过的事情。我还在谷歌游戏机中启用了OAuth 2.0。

1 个答案:

答案 0 :(得分:0)

感谢@DalmTo向它的方向投掷。

基本上Api Key没有特权来检索评论和类似的东西。对于深度权限,我必须使用Oauth,它基本上与API Key一样创建,但在Oauth中,您收到一个client_secrets.json文件,其中包含:客户端密钥,客户端ID等...

然后你在你的代码中调用它。

注意:它们是调用client_secrets.json文件的有效方法,但这取决于您的需要。

我的方式:Reader clientSecretReader = new InputStreamReader( new FileInputStream("/home/Downloads/src/client_secrets.json"));