Hello Analytics API: Hizmet hesapları için Java hızlı başlangıç kılavuzu

Bu eğitimde, bir Google Analytics hesabına erişmek, Analytics API'lerini sorgulamak, API yanıtlarını işlemek ve sonuçların çıktısını almak için gereken adımlar açıklanmaktadır. Bu eğiticide Core Reporting API v3.0, Management API v3.0 ve OAuth2.0 kullanılmıştır.

1. Adım: Analytics API'yi etkinleştirin

Google Analytics API'yi kullanmaya başlamak için önce kurulum aracını kullanmanız gerekir. Bu araç, Google API Konsolu'nda proje oluşturma, API'yi etkinleştirme ve kimlik bilgileri oluşturma konusunda size rehberlik eder.

İstemci kimliği oluşturun

  1. Hizmet hesapları sayfasını açın. İstenirse bir proje seçin.
  2. Hizmet Hesabı Oluştur'u tıklayın, hizmet hesabı için bir ad ve açıklama girin. Varsayılan hizmet hesabı kimliğini kullanabilir veya farklı, benzersiz bir tane seçebilirsiniz. Tamamladıktan sonra Oluştur'u tıklayın.
  3. Sonraki Hizmet hesabı izinleri (isteğe bağlı) bölümü gerekli değildir. Devam'ı tıklayın.
  4. Kullanıcıların bu hizmet hesabına erişmelerine izin ver ekranında, Anahtar oluştur bölümüne gidin. Anahtar oluştur'u tıklayın.
  5. Görüntülenen yan panelde anahtar biçimini seçin: JSON önerilir.
  6. Oluştur'u tıklayın. Herkese açık/özel yeni anahtar çiftiniz oluşturulur ve makinenize indirilir; bu anahtarın tek kopyası olarak işlev görür. Güvenli şekilde nasıl depolanacağını öğrenmek için Hizmet hesabı anahtarlarını yönetme konusuna bakın.
  7. Özel anahtar bilgisayarınıza kaydedildi iletişiminde Kapat'ı tıklayın. Ardından hizmet hesapları tablosuna dönmek için Tamam'ı tıklayın.

Google Analytics hesabına hizmet hesabı ekleyin

Yeni oluşturulan hizmet hesabının bir e-posta adresi (<projectId>-<uniqueId>@developer.gserviceaccount.com) olur. API üzerinden erişmek istediğiniz Google Analytics hesabına kullanıcı eklemek için bu e-posta adresini kullanın. Yalnızca bu eğitim için Okuma ve Analiz izinleri gereklidir.

2. Adım: Google İstemci Kitaplığı'nı yükleyin

Google Analytics API Java İstemcisini yüklemek için çıkarmanız ve Java sınıf yoluna kopyalamanız gereken tüm jar'ları içeren bir ZIP dosyası indirmeniz gerekir.

  1. Gerekli tüm bağımlılıkları içeren bir ZIP dosyası olarak paketlenmiş olan Google Analytics Java istemci kitaplığını indirin.
  2. ZIP dosyasını ayıkla
  3. libs dizinindeki tüm JAR'ları sınıf yoluna ekleyin.
  4. google-api-services-analytics-v3-[version].jar jar dosyasını sınıf yoluna ekleyin.

3. adım: Örneği oluşturun

Verilen örnek kodu içeren HelloAnalytics.java adında tek bir dosya oluşturmanız gerekir.

  1. Aşağıdaki kaynak kodu HelloAnalytics.java hesabına kopyalayın veya indirin.
  2. Daha önce indirilen client_secrets.JSON dosyasını örnek kodla aynı dizine taşıyın.
  3. KEY_FILE_LOCATION değerlerini Developer Console'daki uygun değerlerle değiştirin.
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. Adım: Örneği çalıştırın

Analytics API'yi etkinleştirdikten sonra Java için Google API'leri istemci kitaplığını yükleyin ve örneğin çalıştırılmaya hazır olduğu örnek kaynak kodunu ayarlayın.

IDE kullanıyorsanız varsayılan bir çalıştırma hedefinin HelloAnalytics sınıfına ayarlandığından emin olun. Aksi takdirde uygulamayı komut satırından derleyip çalıştırabilirsiniz:

  1. Şu komutu kullanarak örneği derleyin:
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
  2. Şu komutu kullanarak örneği çalıştırın:
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics

Bu adımları tamamladığınızda örnek, yetkili kullanıcının ilk Google Analytics görünümünün (profili) adını ve son yedi gündeki oturum sayısını verir.

Yetkili Analytics hizmet nesnesiyle artık Management API referans belgelerinde bulunan kod örneklerinden herhangi birini çalıştırabilirsiniz. Örneğin, kodu accountSummaries.list yöntemini kullanacak şekilde değiştirmeyi deneyebilirsiniz.