错误:项目中未使用Analytics Reporting API V4。

3
我正在尝试从JAVA代码访问我的分析数据。但是当运行以下代码时,
package com.test.googleapi;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.services.analyticsreporting.v4.AnalyticsReporting;
import com.google.api.services.analyticsreporting.v4.model.DateRange;
import com.google.api.services.analyticsreporting.v4.model.Dimension;
import com.google.api.services.analyticsreporting.v4.model.GetReportsRequest;
import com.google.api.services.analyticsreporting.v4.model.GetReportsResponse;
import com.google.api.services.analyticsreporting.v4.model.Metric;
import com.google.api.services.analyticsreporting.v4.model.ReportRequest;

public class AnalyticsApiTest {
    public static void main(String[] args) throws Exception {
        GoogleCredential credential = GoogleCredential
                .fromStream(new FileInputStream(new File("assets/client-secrets/service-account-key.json")))
                .createScoped(Collections.singleton("https://www.googleapis.com/auth/analytics.readonly"));
        HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
        JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
        AnalyticsReporting analyticsReporting = new AnalyticsReporting.Builder(httpTransport, jsonFactory, credential)
                .setApplicationName("Test")
                .build();

        DateRange dateRange = new DateRange();
        dateRange.setStartDate("2015-06-15");
        dateRange.setEndDate("2015-06-30");

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

        //Create the Dimensions object.
        Dimension browser = new Dimension()
            .setName("ga:browser");

        // Create the ReportRequest object.
        ReportRequest request = new ReportRequest()
            .setViewId("XXXX")
            .setDateRanges(Arrays.asList(dateRange))
            .setDimensions(Arrays.asList(browser))
            .setMetrics(Arrays.asList(sessions));

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

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

        // Call the batchGet method.
        GetReportsResponse response = analyticsReporting.reports().batchGet(getReport).execute();

    }
}

我遇到了以下错误:

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Analytics Reporting API V4 has not been used in project analytics-test-1279 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/analyticsreporting.googleapis.com/overview?project=analytics-test-1279 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
    "reason" : "forbidden"
  } ],
  "message" : "Analytics Reporting API V4 has not been used in project analytics-test-1279 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/analyticsreporting.googleapis.com/overview?project=analytics-test-1279 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
  "status" : "PERMISSION_DENIED"
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:321)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1056)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)
    at com.test.googleapi.AnalyticsApiTest.main(AnalyticsApiTest.java:73)

我已经在analytics-test-1279项目中设置了服务账号密钥,同时启用了Analytics API。

已启用Analytics API

我无法确定这里到底有什么问题。

1个回答

6

谢谢,我之前必须在搜索框中输入“Analytics”一词才能找到“Analytics Reporting API V4”。启用它后,问题得到了解决。还必须将服务账户电子邮件添加到Analytics用户管理中以便访问数据。 - Kenpachi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接