Xin chào Analytics Reporting API phiên bản 4; bắt đầu nhanh Java cho các ứng dụng đã cài đặt

Hướng dẫn này sẽ trình bày các bước bắt buộc để truy cập vào API Báo cáo Analytics phiên bản 4.

1. Bật API

Để bắt đầu sử dụng API Báo cáo Analytics phiên bản 4, trước tiên, bạn cần sử dụng công cụ thiết lập. Công cụ này sẽ hướng dẫn bạn tạo dự án trong Bảng điều khiển API của Google, bật API và tạo thông tin đăng nhập.

Lưu ý: Để tạo Mã ứng dụng web hoặc Ứng dụng đã cài đặt, bạn cần đặt tên sản phẩm trong màn hình đồng ý. Nếu chưa thực hiện, bạn sẽ thấy lời nhắc Định cấu hình màn hình đồng ý.

Tạo thông tin đăng nhập

  • Mở trang Thông tin xác thực.
  • Nhấp vào Tạo thông tin xác thực rồi chọn Mã ứng dụng khách OAuth
  • Đối với Application type (Loại ứng dụng), hãy chọn Other (Khác).
  • Đặt tên cho mã ứng dụng khách là quickstart rồi nhấp vào quickstart.

Trên trang Thông tin xác thực, hãy nhấp vào mã ứng dụng khách mới tạo rồi nhấp vào Tải JSON xuống rồi lưu dưới dạng client_secrets.json. Bạn sẽ cần đến mã này trong phần hướng dẫn sau.

2. Cài đặt thư viện ứng dụng

Để cài đặt Ứng dụng Java API của Google Analytics, bạn phải tải xuống một tệp zip chứa tất cả các tệp jar bạn cần để trích xuất và sao chép vào classpath Java.

  1. Tải thư viện ứng dụng Java phiên bản 4 của API Báo cáo Analytics xuống. Thư viện này đóng gói dưới dạng tệp ZIP với tất cả các phần phụ thuộc bắt buộc.
  2. Giải nén tệp ZIP.
  3. Thêm tất cả tệp JAR trong thư mục libs vào classpath.
  4. Thêm tệp jar google-api-services-analyticsreporting-v4-[version].jar vào classpath.

Thông tin chi tiết về môi trường Java

Eclipse

Đối với Eclipse, hãy xem câu hỏi về StackOverflow để biết hướng dẫn thêm tệp JAR vào classpath của dự án.

NetBeans

Đối với NetBeans, hãy xem câu hỏi về StackOverflow để biết hướng dẫn về cách thêm tệp JAR vào classpath của dự án.

IntelliJ IDEA

Đối với IntelliJ IDEA, hãy xem câu hỏi về StackOverflow để biết hướng dẫn về cách thêm tệp JAR vào classpath của dự án.

Dòng lệnh

Nếu bạn phát triển từ dòng lệnh, hãy thêm phần sau vào lệnh gọi javacjava:

-classpath /path/to/directory/with/unzipped/jars

3. Thiết lập mẫu

Bạn cần tạo một tệp có tên HelloAnalyticsReporting.java chứa mã mẫu đã cho.

  • Sao chép hoặc tải xuống mã nguồn sau vào HelloAnalyticsReporting.java.
  • Di chuyển client_secrets.json đã tải xuống trước đó vào cùng thư mục với mã mẫu.
  • Thay thế giá trị của VIEW_ID bằng mã của thành phần hiển thị mà bạn muốn truy cập.
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;

import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.google.analyticsreporting.v4.AnalyticsreportingScopes;
import com.google.analyticsreporting.v4.Analyticsreporting;
import com.google.analyticsreporting.v4.model.ColumnHeader;
import com.google.analyticsreporting.v4.model.DateRange;
import com.google.analyticsreporting.v4.model.DateRangeValues;
import com.google.analyticsreporting.v4.model.Dimension;
import com.google.analyticsreporting.v4.model.GetReportsRequest;
import com.google.analyticsreporting.v4.model.GetReportsResponse;
import com.google.analyticsreporting.v4.model.Metric;
import com.google.analyticsreporting.v4.model.MetricHeaderEntry;
import com.google.analyticsreporting.v4.model.Report;
import com.google.analyticsreporting.v4.model.ReportRequest;
import com.google.analyticsreporting.v4.model.ReportRow;


/**
 * A simple example of how to access the Google Analytics API.
 */
public class HelloAnalytics {
  // Path to client_secrets.json file downloaded from the Developer's Console.
  // The path is relative to HelloAnalytics.java.
  private static final String CLIENT_SECRET_JSON_RESOURCE = "client_secrets.json";

  // Replace with your view ID.
  private static final String VIEW_ID = "<REPLACE_WITH_VIEW_ID>";

  // The directory where the user's credentials will be stored.
  private static final File DATA_STORE_DIR = new File(
      System.getProperty("user.home"), ".store/hello_analytics");

  private static final String APPLICATION_NAME = "Hello Analytics Reporting";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static NetHttpTransport httpTransport;
  private static FileDataStoreFactory dataStoreFactory;

  public static void main(String[] args) {
    try {
      Analyticsreporting service = initializeAnalyticsReporting();

      GetReportsResponse response = getReport(service);
      printResponse(response);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }


  /**
   * Initializes an authorized Analytics Reporting service object.
   *
   * @return The analytics reporting service object.
   * @throws IOException
   * @throws GeneralSecurityException
   */
  private static Analyticsreporting initializeAnalyticsReporting() throws GeneralSecurityException, IOException {

    httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);

    // Load client secrets.
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
        new InputStreamReader(HelloAnalytics.class
            .getResourceAsStream(CLIENT_SECRET_JSON_RESOURCE)));

    // Set up authorization code flow for all authorization scopes.
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow
        .Builder(httpTransport, JSON_FACTORY, clientSecrets,
            AnalyticsreportingScopes.all()).setDataStoreFactory(dataStoreFactory)
        .build();

    // Authorize.
    Credential credential = new AuthorizationCodeInstalledApp(flow,
        new LocalServerReceiver()).authorize("user");
    // Construct the Analytics Reporting service object.
    return new Analyticsreporting.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
  }

  /**
   * Query the Analytics Reporting API V4.
   * Constructs a request for the sessions for the past seven days.
   * Returns the API response.
   *
   * @param service
   * @return GetReportResponse
   * @throws IOException
   */
  private static GetReportsResponse getReport(Analyticsreporting service) 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:sessions")
        .setAlias("sessions");

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

    // Create the ReportRequest object.
    ReportRequest request = new ReportRequest()
        .setViewId(VIEW_ID)
        .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 = service.reports().batchGet(getReport).execute();

    // Return the response.
    return response;
  }

  /**
   * Parses and prints the Analytics Reporting API V4 response.
   *
   * @param response the Analytics Reporting API V4 response.
   */
  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));
          }
        }
      }
    }
  }
}

4. Chạy mẫu

Nếu bạn đang dùng IDE, hãy đảm bảo bạn đã đặt đích chạy mặc định thành lớp HelloAnalytics.

  • Ứng dụng sẽ tải trang cấp phép trong trình duyệt.
  • Nếu chưa đăng nhập vào Tài khoản Google, bạn sẽ được nhắc đăng nhập. Nếu đã đăng nhập vào nhiều Tài khoản Google, bạn sẽ được yêu cầu chọn một tài khoản để sử dụng cho khoản uỷ quyền này.

Khi bạn hoàn thành các bước này, mẫu sẽ xuất ra số phiên trong 7 ngày qua cho chế độ xem đã cho.