【问题标题】:com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden Exceptioncom.google.api.client.googleapis.json.GoogleJsonResponseException:403 禁止异常
【发布时间】:2017-07-10 14:35:27
【问题描述】:

我在将分析中的统计数据作为源转储时发现了这个错误。

谁能说这可能是什么......??

public Get getAnalyticsReportDefination() {
    String month = ((fromCal.get(Calendar.MONTH) + 1) < 10 ? "0" + (fromCal.get(Calendar.MONTH) + 1) : "" + (fromCal.get(Calendar.MONTH) + 1));
    String date = (fromCal.get(Calendar.DATE) < 10 ? "0" + fromCal.get(Calendar.DATE) : "" + fromCal.get(Calendar.DATE));
    String toMonth = ((toCal.get(Calendar.MONTH) + 1) < 10 ? "0" + (toCal.get(Calendar.MONTH) + 1) : "" + (toCal.get(Calendar.MONTH) + 1));
    String toDate = (toCal.get(Calendar.DATE) < 10 ? "0" + toCal.get(Calendar.DATE) : "" + toCal.get(Calendar.DATE));
    String TimeStamp1 = fromCal.get(Calendar.YEAR) + "-" + month + "-" + date;
    String TimeStamp2 = toCal.get(Calendar.YEAR) + "-" + toMonth + "-" + toDate;
    log.info("Google Analytics Stats for date range " +TimeStamp1 + " to " +TimeStamp2);
    String accessToken = gleTokenInf.getAccessToken();
    String refreshToken = gleTokenInf.getRefreshToken();
    Analytics analytics = null;
    NetHttpTransport netHttpTransport = new NetHttpTransport();

    if (accessToken != null && refreshToken != null) {
        JacksonFactory jacksonFactory = new JacksonFactory();
         GoogleCredential credential =new GoogleCredential.Builder().setTransport(netHttpTransport)
                                               .setJsonFactory(jacksonFactory).setClientSecrets(CLIENT_ID, CLIENT_SECRET).build();
                           credential.setAccessToken(accessToken);
                           credential.setRefreshToken(refreshToken);
        analytics=new Analytics.Builder(netHttpTransport, jacksonFactory, credential).setApplicationName(APPLICATION_NAME).build();
        try {
            //AT a time we can get only 7 dimensions and 10 metrics
            apiQuery = analytics.data().ga().get("ga:" + gleTokenInf.getProfileId(), TimeStamp1, TimeStamp2,getMetrics());
            apiQuery.setDimensions(getDimensions());
            StringBuilder source = new StringBuilder();
            int len = FilterConditions.length;
            for (int i = 0; i < len; i++) {
                   source.append(FilterConditions[i]).append(filterExpression).append(FilterValues[i]).append(FilterType); 
                }
            apiQuery.setFilters(source.substring(0, source.length() - 1));
            gaData = apiQuery.execute();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    return apiQuery;
}  

错误是:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "usageLimits",
    "message" : "Daily Limit Exceeded. The quota will be reset at midnight Pacific Time (PT). You may monitor your quota usage and adjust limits in the API Console: https://console.developers.google.com/apis/api/analytics/quotas?project=433676821622",
    "reason" : "dailyLimitExceeded",
    "extendedHelp" : "https://console.developers.google.com/apis/api/analytics/quotas?project=433676821622"
  } ],
  "message" : "Daily Limit Exceeded. The quota will be reset at midnight Pacific Time (PT). You may monitor your quota usage and adjust limits in the API Console
}

----------

metrics: ga:transactions,ga:transactionRevenue,ga:itemRevenue,ga:transactionShipping,ga:transactionTax

dimensions: ga:campaign,ga:adGroup

提前致谢。

【问题讨论】:

  • “超出每日限额”的哪一部分不清楚?
  • 编辑没有帮助。该错误告诉您您已超出每天允许执行的查询次数。
  • 那有什么办法。
  • 等到明天,就像错误消息说的那样。以下短语对您“已超出每日限制。配额将在太平洋时间 (PT) 午夜重置。您可以监控您的配额使用情况并在 API 控制台中调整限制” 是什么意思??跨度>

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


【解决方案1】:

在使用 Google Analytics API 时,您应该注意几个配额。

首先是您的应用程序每天最多可以发出 50000 个请求。第二个是您尝试访问的每个视图每天最多可以发出 10000 个请求。

已超出每日限额。配额将在太平洋时间 (PT) 午夜重置

表示您已超过其中一项配额。找出是哪一个的最简单方法是尝试使用不同的视图发出请求。如果它有效,那么您就知道您在第一次观看时就超出了配额。如果不是,则意味着您超出了项目的配额。无论您用尽了哪个配额,您都将无法再次访问 API,直到配额在美国西部时间午夜重置。

您可以请求扩展每个项目的 50000 个请求。通过 Google 开发者控制台,您在其中启用了分析 api 并在配额部分下。获得延期大约需要一个月的时间,因此最好在您每天使用 80% 的配额时申请。

您不能请求延长每天 10000 个请求。

【讨论】:

  • 谢谢 DalmTo。
猜你喜欢
  • 2015-12-05
  • 1970-01-01
  • 2020-08-10
  • 2021-07-10
  • 2016-10-29
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多