0

mit Ich mag Google Analytics-Daten mit Google-Zugriffstoken holen, aber ich fand es noch kein Beispiel, ich bin immer „Exception in threadeinfaches Beispiel für Token google Zugang bekommen OAuth2.0 java

“ main "java.net.SocketException: Anschluss Reset"

Fehler, unten ist der Code: -

import java.io.File; 
import java.io.FileInputStream; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collections; 

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.jackson2.JacksonFactory; 
import com.google.api.services.analyticsreporting.v4.AnalyticsReporting; 
import com.google.api.services.analyticsreporting.v4.model.DateRange; 
import com.google.api.services.analyticsreporting.v4.model.Dimension; 
import com.google.api.services.analyticsreporting.v4.model.GetReportsRequest; 
import com.google.api.services.analyticsreporting.v4.model.GetReportsResponse; 
import com.google.api.services.analyticsreporting.v4.model.Metric; 
import com.google.api.services.analyticsreporting.v4.model.ReportRequest; 

public class AnalyticsApiTest { 
    public static void main(String[] args) throws Exception { 
     GoogleCredential credential = GoogleCredential 
       .fromStream(new FileInputStream(new File("d:\\clientsecretnew.json"))) 
       .createScoped(Collections.singleton("https://www.googleapis.com/auth/analytics.readonly")); 
     HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
     JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 
     AnalyticsReporting analyticsReporting = new AnalyticsReporting.Builder(httpTransport, jsonFactory, credential) 
       .setApplicationName("testing_analytics") 
       .build(); 

     DateRange dateRange = new DateRange(); 
     dateRange.setStartDate("2017-06-11"); 
     dateRange.setEndDate("2017-06-13"); 

     // Create the Metrics object. 
     Metric sessions = new Metric() 
      .setExpression("ga:pageview") 
      .setAlias("sessions"); 

     //Create the Dimensions object. 
     Dimension browser = new Dimension() 
      .setName("ga:browser"); 

     // Create the ReportRequest object. 
     ReportRequest request = new ReportRequest() 
      .setViewId("ga:152411###") 
      .setDateRanges(Arrays.asList(dateRange)) 
      .setDimensions(Arrays.asList(browser)) 
      .setMetrics(Arrays.asList(sessions)); 

     ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>(); 
     requests.add(request); 

     // Create the GetReportsRequest object. 
     GetReportsRequest getReport = new GetReportsRequest() 
      .setReportRequests(requests); 

     // Call the batchGet method. 
     GetReportsResponse response = analyticsReporting.reports().batchGet(getReport).execute(); 


    } 
} 

Kann mir jemand sagen, was in dieser falsch ist ??

Antwort

0

Ich denke, Sie sollten versuchen, folgende Googles tutorials. Dies ist der Code i ga:pageview verwenden ist keine gültige metrische seine ga:pageviews

Mein Code:

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.auth.oauth2.Credential; 
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.HttpTransport; 
import com.google.api.client.json.JsonFactory; 
import com.google.api.client.json.jackson2.JacksonFactory; 
import com.google.api.client.util.store.DataStoreFactory; 
import com.google.api.client.util.store.FileDataStoreFactory; 
import com.google.api.services.analyticsreporting.v4.AnalyticsReporting; 
import com.google.api.services.analyticsreporting.v4.AnalyticsReportingScopes; 
import com.google.api.services.analyticsreporting.v4.model.*; 

import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.Collections; 

/** 
* @author Linda Lawton 
*/ 
public class ReportingSample { 

    /** 
    * Be sure to specify the name of your application. If the application name is {@code null} or 
    * blank, the application will log a warning. Suggested format is "MyCompany-ProductName/1.0". 
    */ 
    private static final String APPLICATION_NAME = "DAIMTO Google Analytics Reporting V4 sample"; 

    /** Directory to store user credentials. */ 
    private static final java.io.File DATA_STORE_DIR = 
      new java.io.File(System.getProperty("user.home"), ".store/reporting_sample"); 

    /** 
    * Global instance of the {@link DataStoreFactory}. The best practice is to make it a single 
    * globally shared instance across your application. 
    */ 
    private static FileDataStoreFactory dataStoreFactory; 

    /** Global instance of the HTTP transport. */ 
    private static HttpTransport httpTransport; 

    /** Global instance of the JSON factory. */ 
    private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); 

    private static AnalyticsReporting service ; 

    /** Authorizes the installed application to access user's protected data. */ 
    private static Credential authorize() throws Exception { 
     // load client secrets 
     GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, 
       new InputStreamReader(ReportingSample.class.getResourceAsStream("/client_secrets.json"))); 

     // set up authorization code flow 
     GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
       httpTransport, JSON_FACTORY, clientSecrets, 
       Collections.singleton(AnalyticsReportingScopes.ANALYTICS_READONLY)).setDataStoreFactory(
       dataStoreFactory).build(); 
     // authorize 
     return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); 
    } 

    public static void main(String[] args) { 
     try { 
      httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
      dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR); 
      // authorization 
      Credential credential = authorize(); 
      // set up global Analytics instance 
      service = new AnalyticsReporting.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName(
        APPLICATION_NAME).build(); 
      // run commands 

      fetchData(service); 
      // success! 
      return; 
     } catch (IOException e) { 
      System.err.println(e.getMessage()); 
     } catch (Throwable t) { 
      t.printStackTrace(); 
     } 
     System.exit(1); 
    } 


    public static void fetchData(AnalyticsReporting service) throws IOException{ 

     DateRange dateRange = new DateRange(); 
     dateRange.setStartDate("2017-06-11"); 
     dateRange.setEndDate("2017-06-13"); 

     // Create the Metrics object. 
     Metric sessions = new Metric() 
       .setExpression("ga:sessions") 
       .setAlias("sessions"); 

     //Create the Dimensions object. 
     Dimension browser = new Dimension() 
       .setName("ga:browser"); 

     // Create the ReportRequest object. 
     ReportRequest request = new ReportRequest() 
       .setViewId("ga:78110423") 
       .setDateRanges(Arrays.asList(dateRange)) 
       .setDimensions(Arrays.asList(browser)) 
       .setMetrics(Arrays.asList(sessions)); 

     ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>(); 
     requests.add(request); 

     // Create the GetReportsRequest object. 
     GetReportsRequest getReport = new GetReportsRequest() 
       .setReportRequests(requests); 

     // Call the batchGet method. 
     GetReportsResponse response = service.reports().batchGet(getReport).execute(); 

    } 
}