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

Bu eğitim, bir Google Analytics hesabına erişmek, Analytics API'lerini sorgulamak, API yanıtlarını işlemek ve sonuçları çıkarmak için gereken adımlarda size yol gösterir. 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. Create'i (Oluştur) 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 olacaktır (<projectId>-<uniqueId>@developer.gserviceaccount.com). API aracılığıyla 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 yolunuza 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 sunulan Google Analytics Java istemci kitaplığını indirin.
  2. ZIP dosyasını çıkarın
  3. libs dizinindeki tüm JAR'leri sınıf yolunuza ekleyin.
  4. google-api-services-analytics-v3-[version].jar jar dosyasını sınıf yolunuza ekleyin.

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

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

  1. Aşağıdaki kaynak kodunu HelloAnalytics.java hizmetine kopyalayın veya indirin.
  2. Daha önce indirilen client_secrets.JSON öğesini ö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ışmaya hazır olduğu örnek kaynak kodunu ayarlayın.

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

  1. Örneği derlemek için şunu kullanın:
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
  2. Şu örneği 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 (profilinin) adını ve son yedi gündeki oturum sayısını verir.

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