使用API​​密钥执行BatchGet

问题描述

已向我提供了API_KEY和VIEW_ID,用于从客户端获取收入数据。

作为概念验证的第一步,我根据快速入门中的示例构建了以下内容

public class Main {

    private static final String API_KEY = "foo"
    private static final String VIEW_ID = "bar";

    public static void main(String[] args) throws GeneralSecurityException,IOException {
        printResponse(getRequest(getService()).execute());
    }

    public static AnalyticsReporting getService() throws GeneralSecurityException,IOException {
        HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
        HttpRequestinitializer httpRequestinitializer = null;
        return new AnalyticsReporting(httpTransport,GsonFactory.getDefaultInstance(),httpRequestinitializer);
    }

    public static BatchGet getRequest(AnalyticsReporting reporting) throws IOException {
        // Create the Daterange object.
        Daterange daterange = new Daterange();
        daterange.setStartDate("7DaysAgo");
        daterange.setEndDate("today");

        // Create the Metrics object.
        Metric sessions = new Metric().setExpression("ga:transactionRevenue").setAlias("transactionRevenue");

        Dimension pageTitle = new Dimension().setName("ga:date");

        // Create the ReportRequest object.
        ReportRequest request = new ReportRequest().setViewId(VIEW_ID).setDateranges(Arrays.asList(daterange))
                .setMetrics(Arrays.asList(sessions)).setDimensions(Arrays.asList(pageTitle));

        ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
        requests.add(request);

        // Create the GetReportsRequest object.
        GetReportsRequest getReport = new GetReportsRequest().setReportRequests(requests);

        BatchGet setKey = reporting.reports().batchGet(getReport).setKey(API_KEY);
        return setKey;
    }

    private static void printResponse(GetReportsResponse response) {
        for (Report report : response.getReports()) {
            ColumnHeader header = report.getColumnHeader();
            List<String> dimensionHeaders = header.getDimensions();
            List<MetricHeaderEntry> metricHeaders = header.getMetricHeader().getMetricHeaderEntries();
            List<ReportRow> rows = report.getData().getRows();

            if (rows == null) {
                System.out.println("No data found for " + VIEW_ID);
                return;
            }

            for (ReportRow row : rows) {
                List<String> dimensions = row.getDimensions();
                List<DaterangeValues> metrics = row.getMetrics();

                for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) {
                    System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i));
                }

                for (int j = 0; j < metrics.size(); j++) {
                    System.out.print("Date Range (" + j + "): ");
                    DaterangeValues values = metrics.get(j);
                    for (int k = 0; k < values.getValues().size() && k < metricHeaders.size(); k++) {
                        System.out.println(metricHeaders.get(k).getName() + ": " + values.getValues().get(k));
                    }
                }
            }
        }
    }
}

故意将HttpRequestinitializer保留为空,因为身份验证是由API KEY(而非OAuth2)处理的。

但是,这是失败的401。

在我联系客户之前,请他们确认所提供的API_KEY和VIEW_ID是正确的,是否还有其他明显的检查内容,或者我没有使用初始化设置?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)