שלום Analytics API: מדריך למתחילים של Java לאפליקציות מותקנות

במדריך הזה מפורטים השלבים שצריך לבצע כדי להיכנס לחשבון Google Analytics, לשלוח שאילתות לממשקי ה-API של Analytics, לטפל בתשובות ה-API ולהציג את התוצאות כפלט. במדריך הזה נשתמש בגרסה 3.0 של ממשק ה-API הראשי לדיווח, ב-Management API v3.0 וב-OAuth2.0.

שלב 1: מפעילים את Analytics API

על מנת להתחיל להשתמש ב-Google Analytics API, תחילה צריך להשתמש בכלי ההגדרה, שמדריך אתכם ביצירת פרויקט במסוף Google API, הפעלת ה-API ויצירת פרטי כניסה.

יצירת מזהה לקוח

מהדף 'פרטי כניסה':

  1. לוחצים על Create Credentials (יצירת פרטי כניסה) ובוחרים באפשרות OAuth client ID (מזהה לקוח OAuth).
  2. בשדה סוג האפליקציה, בוחרים באפשרות אחר.
  3. נותנים שם לפרטי הכניסה.
  4. לוחצים על יצירה.

בוחרים את פרטי הכניסה שיצרתם ולוחצים על Download JSON. שומרים את הקובץ שהורדתם בשם client_secrets.json. תצטרכו אותו מאוחר יותר במדריך.

שלב 2: התקנת ספריית הלקוח של Google

כדי להתקין את לקוח Java של Google Analytics API, צריך להוריד קובץ ZIP שמכיל את כל הצנצנות שצריך לחלץ ולהעתיק לנתיב ה-class של Java.

  1. מורידים את ספריית הלקוח של Google Analytics Java, שמקובצת כקובץ ZIP עם כל יחסי התלות הנדרשים.
  2. חילוץ קובץ ה-ZIP
  3. מוסיפים את כל קובצי ה-JAR שנמצאים בספרייה libs לנתיב המחלקה.
  4. מוסיפים את הצנצנת google-api-services-analytics-v3-[version].jar לנתיב המחלקה.

שלב 3: מגדירים את הדוגמה

עליכם ליצור קובץ יחיד בשם HelloAnalytics.java, שיכלול את הקוד לדוגמה הנתון.

  1. צריך להעתיק או להוריד את קוד המקור הבא אל HelloAnalytics.java.
  2. מעבירים את הקובץ client_secrets.json שהורדתם אל אותה ספרייה שבה נמצא הקוד לדוגמה.
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 com.google.api.services.analytics.Analytics;
import com.google.api.services.analytics.AnalyticsScopes;
import com.google.api.services.analytics.model.Accounts;
import com.google.api.services.analytics.model.GaData;
import com.google.api.services.analytics.model.Profiles;
import com.google.api.services.analytics.model.Webproperties;

import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;


/**
 * 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";

  // 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";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static NetHttpTransport httpTransport;
  private static FileDataStoreFactory dataStoreFactory;

  public static void main(String[] args) {
    try {
      Analytics analytics = initializeAnalytics();
      String profile = getFirstProfileId(analytics);
      printResults(getResults(analytics, profile));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static Analytics initializeAnalytics() throws Exception {

    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 auth scopes.
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow
        .Builder(httpTransport, JSON_FACTORY, clientSecrets,
        AnalyticsScopes.all()).setDataStoreFactory(dataStoreFactory)
        .build();

    // Authorize.
    Credential credential = new AuthorizationCodeInstalledApp(flow,
        new LocalServerReceiver()).authorize("user");

    // Construct the Analytics service object.
    return new Analytics.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
  }

  private static String getFirstProfileId(Analytics analytics) throws IOException {
    // Get the first view (profile) ID for the authorized user.
    String profileId = null;

    // Query for the list of all accounts associated with the service account.
    Accounts accounts = analytics.management().accounts().list().execute();

    if (accounts.getItems().isEmpty()) {
      System.err.println("No accounts found");
    } else {
      String firstAccountId = accounts.getItems().get(0).getId();

      // Query for the list of properties associated with the first account.
      Webproperties properties = analytics.management().webproperties()
          .list(firstAccountId).execute();

      if (properties.getItems().isEmpty()) {
        System.err.println("No properties found");
      } else {
        String firstWebpropertyId = properties.getItems().get(0).getId();

        // Query for the list views (profiles) associated with the property.
        Profiles profiles = analytics.management().profiles()
            .list(firstAccountId, firstWebpropertyId).execute();

        if (profiles.getItems().isEmpty()) {
          System.err.println("No views (profiles) found");
        } else {
          // Return the first (view) profile associated with the property.
          profileId = profiles.getItems().get(0).getId();
        }
      }
    }
    return profileId;
  }

  private static GaData getResults(Analytics analytics, String profileId) throws IOException {
    // Query the Core Reporting API for the number of sessions
    // in the past seven days.
    return analytics.data().ga()
        .get("ga:" + profileId, "7daysAgo", "today", "ga:sessions")
        .execute();
  }

  private static void printResults(GaData results) {
    // Parse the response from the Core Reporting API for
    // the profile name and number of sessions.
    if (results != null && !results.getRows().isEmpty()) {
      System.out.println("View (Profile) Name: "
        + results.getProfileInfo().getProfileName());
      System.out.println("Total Sessions: " + results.getRows().get(0).get(0));
    } else {
      System.out.println("No results found");
    }
  }
}

שלב 4: מריצים את הדוגמה

אחרי שמפעילים את ה-API של Analytics, התקנתם את ספריית הלקוח של Google APIs עבור Java, והגדרתם את קוד המקור לדוגמה שהדוגמה מוכנה להרצה.

אם משתמשים בסביבת פיתוח משולבת (IDE), חשוב לוודא שיעד הריצה שמוגדר כברירת מחדל הוא המחלקה HelloAnalytics.

  1. האפליקציה תטען את דף ההרשאה בדפדפן.
  2. אם עדיין לא התחברת לחשבון Google, המערכת תבקש ממך להתחבר. אם אתם מחוברים למספר חשבונות Google, תתבקשו לבחור חשבון אחד שישמש לצורך ההרשאה.

לאחר ביצוע השלבים האלו, הדגימה תפיק את השם של התצוגה המפורטת הראשונה של המשתמש המורשה ב-Google Analytics ואת מספר הסשנים בשבעת הימים האחרונים.

בעזרת אובייקט השירות המורשה של Analytics, תוכלו עכשיו להריץ כל דוגמאות קוד שמופיעות ב מסמכי העזר של Management API. לדוגמה, תוכלו לנסות לשנות את הקוד כדי להשתמש בשיטה accountSummaries.list.