Youtube Analytics和Google服务帐户

目标:实现一个程序(java或python)来检索我在Youtube频道上发布的video中的数据。 该计划将每天(凌晨1:00)推出。

解决方案:要检索数据Youtube,包括每天的观看次数,我认为YouTube Analytics API是最佳解决方案。 我使用Google帐户服务(“GoogleCredential”)对我进行身份validation:

static { // Build service account credential. try { // Create a listener for automatic refresh OAuthAccessToken List list = new ArrayList(); list.add(new CredentialRefreshListener() { public void onTokenResponse(Credential credential, TokenResponse tokenResponse) throws IOException { System.out.println(tokenResponse.toPrettyString()); } public void onTokenErrorResponse(Credential credential, TokenErrorResponse tokenErrorResponse) throws IOException { System.err.println("Error: " + tokenErrorResponse.toPrettyString()); } }); // Create a GoogleCredential for authenticate with ServiceAccount // service credential = new GoogleCredential.Builder() .setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setServiceAccountScopes(SCOPES) .setClock(Clock.SYSTEM) .setServiceAccountPrivateKeyFromP12File( new File("key.p12")) .setRefreshListeners(list).build(); credential.refreshToken(); } catch (GeneralSecurityException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 

我执行Youtube Analytics查询:

 YoutubeAnalytics youtubeAnalytics = new YoutubeAnalytics.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) .setApplicationName("Test-YouTube-Analytics/1.0").build(); // Create request credential.refreshToken(); YoutubeAnalyticsRequest request = youtubeAnalytics.reports() .query("channel==" + channelId, "2012-10-01", "2012-12-01", "views") .setAlt("json") .setKey(API_KEY) .setDimensions("month") .setPrettyPrint(true); System.out.println(request.buildHttpRequest().getUrl().toString()); ResultTable first = (ResultTable) request.execute(); } 

但是我收到以下错误:

 com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error { "code" : 500, "errors" : [ { "domain" : "global", "message" : "Unknown error occurred on the server.", "reason" : "internalError" } ], "message" : "Unknown error occurred on the server." } 

感谢您的见解!

制作YouTube Analytics API请求时,您无法使用服务帐户。 您需要使用YouTube频道的所有者或与该频道相关联的内容所有者的帐户,我不认为服务帐户可以是其中之一。 在以拥有YouTube频道的Google帐户登录后,请完成OAuth 2流程,然后可以在以后重复使用已保存的OAuth 2刷新令牌,以获取可用于运行报告的新访问令牌。

您可以解决该问题,然后再次尝试运行报告吗?

此链接也可能有助于您理解此错误消息以及您可能遇到的其他消息: https : //developers.google.com/analytics/devguides/reporting/core/v3/coreErrors

该页面适用于Google Analytics(分析)核心报告API,但它实际上适用于我在使用YouTube Analytics API时遇到的错误消息之一。 我遇到了相同的500错误,但它是由于一个查询我正在重试没有时间流逝尽管使用不同的开始和结束日期。