问题描述
已向我提供了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 (将#修改为@)