Hello Analytics API: شروع سریع جاوا برای حساب های خدمات

این آموزش مراحل مورد نیاز برای دسترسی به حساب Google Analytics، پرس و جو از API های Analytics، رسیدگی به پاسخ های API و خروجی نتایج را طی می کند. Core Reporting API v3.0 ، Management API v3.0 و OAuth2.0 در این آموزش استفاده شده است.

مرحله 1: API Analytics را فعال کنید

برای شروع استفاده از Google Analytics API، ابتدا باید از ابزار راه اندازی استفاده کنید که شما را از طریق ایجاد پروژه در کنسول API Google، فعال کردن API و ایجاد اعتبارنامه راهنمایی می کند.

یک شناسه مشتری ایجاد کنید

  1. صفحه حساب‌های سرویس را باز کنید. اگر از شما خواسته شد، یک پروژه را انتخاب کنید.
  2. روی ایجاد حساب سرویس کلیک کنید، نام و توضیحاتی را برای حساب سرویس وارد کنید. می‌توانید از شناسه حساب پیش‌فرض سرویس استفاده کنید یا یک شناسه متفاوت و منحصر به فرد را انتخاب کنید. پس از اتمام روی Create کلیک کنید.
  3. بخش مجوزهای حساب سرویس (اختیاری) که در زیر آمده است مورد نیاز نیست. روی Continue کلیک کنید.
  4. در صفحه Grant users access to this service account account ، به قسمت Create key بروید. روی کلید ایجاد کلیک کنید.
  5. در پانل کناری که ظاهر می شود، قالب کلید خود را انتخاب کنید: JSON توصیه می شود.
  6. روی ایجاد کلیک کنید. جفت کلید عمومی/خصوصی جدید شما تولید و در دستگاه شما دانلود می شود. به عنوان تنها کپی این کلید عمل می کند. برای اطلاعات در مورد نحوه ذخیره ایمن آن، به مدیریت کلیدهای حساب سرویس مراجعه کنید.
  7. روی Close روی کلید خصوصی ذخیره شده در گفتگوی رایانه خود کلیک کنید، سپس روی Done کلیک کنید تا به جدول حساب های خدمات خود بازگردید.

حساب سرویس را به حساب Google Analytics اضافه کنید

حساب سرویس جدید ایجاد شده یک آدرس ایمیل خواهد داشت، <projectId>-<uniqueId>@developer.gserviceaccount.com ; از این آدرس ایمیل برای افزودن کاربری به حساب Google Analytics که می‌خواهید از طریق API به آن دسترسی داشته باشید، استفاده کنید. برای این آموزش فقط به مجوزهای Read & Analyze نیاز است.

مرحله ۲: کتابخانه Google Client را نصب کنید

برای نصب Google Analytics API Java Client، باید یک فایل زیپ حاوی تمام شیشه‌هایی را که باید استخراج و در مسیر کلاس جاوا کپی کنید، دانلود کنید.

  1. کتابخانه سرویس گیرنده Google Analytics Java را دانلود کنید، که به عنوان یک فایل ZIP با تمام وابستگی های مورد نیاز همراه است.
  2. فایل ZIP را استخراج کنید
  3. همه JARهای داخل دایرکتوری libs را به classpath خود اضافه کنید.
  4. jar google-api-services-analytics-v3-[version].jar را به کلاس خود اضافه کنید.

مرحله 3: نمونه را تنظیم کنید

شما باید یک فایل به نام HelloAnalytics.java ایجاد کنید که حاوی کد نمونه داده شده باشد.

  1. کد منبع زیر را در HelloAnalytics.java کپی یا دانلود کنید .
  2. client_secrets.JSON را که قبلا دانلود شده است در همان فهرست کد نمونه منتقل کنید.
  3. مقادیر KEY_FILE_LOCATION را با مقادیر مناسب از Developer Console جایگزین کنید.
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.gson.GsonFactory;

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.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.io.IOException;


/**
 * A simple example of how to access the Google Analytics API using a service
 * account.
 */
public class HelloAnalytics {


  private static final String APPLICATION_NAME = "Hello Analytics";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static final String KEY_FILE_LOCATION = "<REPLACE_WITH_JSON_FILE>";
  public static void main(String[] args) {
    try {
      Analytics analytics = initializeAnalytics();

      String profile = getFirstProfileId(analytics);
      System.out.println("First Profile Id: "+ profile);
      printResults(getResults(analytics, profile));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * Initializes an Analytics service object.
   *
   * @return An authorized Analytics service object.
   * @throws IOException
   * @throws GeneralSecurityException
   */
  private static AnalyticsReporting initializeAnalytic() throws GeneralSecurityException, IOException {

    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    GoogleCredential credential = GoogleCredential
        .fromStream(new FileInputStream(KEY_FILE_LOCATION))
        .createScoped(AnalyticsScopes.all());

    // 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 Webproperties 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 را برای جاوا نصب کردید و کد منبع نمونه را تنظیم کردید، نمونه آماده اجرا است.

اگر از یک IDE استفاده می‌کنید، مطمئن شوید که یک هدف اجرای پیش‌فرض روی کلاس HelloAnalytics تنظیم شده است. در غیر این صورت می توانید برنامه را از خط فرمان کامپایل و اجرا کنید:

  1. نمونه را با استفاده از:
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
    کامپایل کنید
  2. نمونه را با استفاده از:
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics
    اجرا کنید

پس از اتمام این مراحل، نمونه نام اولین نمای Google Analytics کاربر مجاز (نمایه) و تعداد جلسات هفت روز گذشته را نمایش می دهد.

با شیء مجاز سرویس Analytics، اکنون می توانید هر یک از نمونه کدهای موجود در اسناد مرجع مدیریت API را اجرا کنید. برای مثال، می‌توانید کد را برای استفاده از روش accountSummaries.list تغییر دهید.