नमस्ते Analytics API: इंस्टॉल किए गए ऐप्लिकेशन के लिए Java क्विकस्टार्ट

इस ट्यूटोरियल में, Google Analytics खाता ऐक्सेस करने, Analytics एपीआई से क्वेरी करने, एपीआई के रिस्पॉन्स को मैनेज करने, और नतीजे देने के लिए ज़रूरी चरणों के बारे में बताया गया है. इस ट्यूटोरियल में, Core Reporting API v3.0, Management API v3.0, और OAuth2.0 का इस्तेमाल किया गया है.

पहला चरण: Analytics API चालू करना

Google Analytics API का इस्तेमाल शुरू करने से पहले, सेटअप टूल का इस्तेमाल करें. यह आपको Google API कंसोल में प्रोजेक्ट बनाने, एपीआई चालू करने, और क्रेडेंशियल बनाने के बारे में जानकारी देता है.

क्लाइंट आईडी बनाना

क्रेडेंशियल पेज से:

  1. क्रेडेंशियल बनाएं पर क्लिक करें और OAuth क्लाइंट आईडी चुनें.
  2. APPLICATION TYPE के लिए, अन्य चुनें.
  3. क्रेडेंशियल को नाम दें.
  4. बनाएं पर क्लिक करें.

अभी-अभी बनाया गया क्रेडेंशियल चुनें और JSON डाउनलोड करें पर क्लिक करें. डाउनलोड की गई फ़ाइल को client_secrets.json के तौर पर सेव करें. आपको बाद में, ट्यूटोरियल में इसकी ज़रूरत पड़ेगी.

दूसरा चरण: Google क्लाइंट लाइब्रेरी इंस्टॉल करना

Google Analytics API Java क्लाइंट इंस्टॉल करने के लिए, आपको एक ZIP फ़ाइल डाउनलोड करनी होगी. इसमें वे सभी जार मौजूद होंगे जिन्हें आपको अपने Java क्लासपाथ में एक्सट्रैक्ट करके कॉपी करना होगा.

  1. Google Analytics Java क्लाइंट लाइब्रेरी डाउनलोड करें, जिसे सभी ज़रूरी डिपेंडेंसी के साथ ZIP फ़ाइल के तौर पर बंडल किया गया है.
  2. ZIP फ़ाइल निकालें
  3. libs डायरेक्ट्री में मौजूद सभी JAR को अपने क्लासपाथ में जोड़ें.
  4. अपने क्लासपाथ में google-api-services-analytics-v3-[version].jar जार जोड़ें.

तीसरा चरण: सैंपल सेटअप करना

आपको 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");
    }
  }
}

चौथा चरण: सैंपल चलाना

Analytics एपीआई चालू करने के बाद, Java के लिए Google API की क्लाइंट लाइब्रेरी इंस्टॉल करें और सैंपल सोर्स कोड सेट अप करें, ताकि सैंपल चलाने के लिए तैयार हो.

अगर किसी IDE का इस्तेमाल किया जा रहा है, तो पक्का करें कि आपके पास HelloAnalytics क्लास पर रन टारगेट डिफ़ॉल्ट रूप से सेट हो.

  1. यह ऐप्लिकेशन, ब्राउज़र में अनुमति देने वाले पेज को लोड कर देगा.
  2. अगर आपने पहले से अपने Google खाते में लॉग इन नहीं किया है, तो आपको लॉग इन करने के लिए कहा जाएगा. अगर आपने एक से ज़्यादा Google खातों में लॉग इन किया हुआ है, तो अनुमति पाने के लिए आपसे एक खाता चुनने के लिए कहा जाएगा.

इन चरणों को पूरा करने के बाद, सैंपल में, अनुमति वाले उपयोगकर्ता के पहले Google Analytics व्यू (प्रोफ़ाइल) का नाम और पिछले सात दिनों के सेशन की संख्या दिखती है.

अनुमति वाले Analytics सेवा ऑब्जेक्ट की मदद से, अब Management API के रेफ़रंस दस्तावेज़ में मिले किसी भी कोड सैंपल को चलाया जा सकता है. उदाहरण के लिए, आपके पास accountSummaries.list तरीके का इस्तेमाल करने के लिए, कोड को बदलने का विकल्प है.