6

Stiamo utilizzando Google Analytics API v3 (versione dot net) per la segnalazione di alcuni dati statistici sul nostro sito Web. Ho il codice in esecuzione bene sul mio computer locale, ma non funzionerebbe sul server di produzione a causa di alcune regole del firewall. Il nostro amministratore di sistema suggerisce di provare e utilizzare un proxy. Ho cercato su Internet le eventuali linee guida per impostare il proxy per il servizio dell'API di Google Analytics, ma senza fortuna. Apprezzo qualsiasi suggerimento in merito.Instrada API v3 di Google Analytics tramite un server proxy

EDIT:

public DataTable GetSearchTrends() 
    { 
     string GoogleAnalyticsProfileId = AppConfigManager.GetGoogleAnalyticsProfileIdForInis(); 

     var service = new AnalyticsService(new BaseClientService.Initializer() 
     { 
      Authenticator = Authenticate() 

     }); 

      DataResource.GaResource.GetRequest request = service.Data.Ga.Get(
      GoogleAnalyticsProfileId, 
      string.Format("{0:yyyy-MM-dd}", StartDate), 
      string.Format("{0:yyyy-MM-dd}", EndDate), 
      GoogleAnalyticsSearchUniquesMetric 
      ); 

     request.Dimensions = GoogleAnalyticsSearchKeywordMetric; 
     request.Sort = string.Concat("-", GoogleAnalyticsSearchUniquesMetric); 
     request.MaxResults = NumberOfSearchTrendsToFetch; 

     GaData response = request.Fetch(); 

     return SearchTrendsHelper.ConvertToDataTable(
      response.Rows, 
      SearchTrendsKeywordsExcludeList, 
      NumberOfSearchTrendsToDisplay 
      ); 
    } 


    private IAuthenticator Authenticate() 
    { 
     string GoogleAnalyticsServiceScope = AnalyticsService.Scopes.AnalyticsReadonly.GetStringValue(); 
     string GoogleApiServiceAccountId = AppConfigManager.GetGoogleApiServiceAccountId(); 
     string GoogleApiServiceAccountKeyFile = AppConfigManager.GetGoogleApiServiceAccountKeyFile(); 
     string GoogleApiServiceAccountKeyPassword = AppConfigManager.GetGoogleApiServiceAccountKeyPassword(); 
     AuthorizationServerDescription desc = GoogleAuthenticationServer.Description; 

     X509Certificate2 key = new X509Certificate2(
      HttpContextFactory.Current.Server.MapPath(GoogleApiServiceAccountKeyFile), 
      GoogleApiServiceAccountKeyPassword, 
      X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet 
      ); 

     AssertionFlowClient client = new AssertionFlowClient(desc, key) { 
      ServiceAccountId = GoogleApiServiceAccountId, 
      Scope = GoogleAnalyticsServiceScope, 
     }; 

     OAuth2Authenticator<AssertionFlowClient> auth = new OAuth2Authenticator<AssertionFlowClient>(
      client, 
      AssertionFlowClient.GetState 
      ); 

     return auth; 
    } 
+0

Puoi caricare il tuo codice da qualche parte.Come stai autenticando e riportando i dati.Vuoi cercare di aiutare quindi –

+0

@KamranShahid: Aggiornata la domanda con il codice sorgente – itsbalur

risposta

3

Non ho trovato alcuna documentazione utile nei forum o su internet, così ha deciso di utilizzare la configurazione System.Net sul web.config.

<system.net> 
    <defaultProxy useDefaultCredentials="true"> 
     <proxy proxyaddress="http://abc.com:3128" usesystemdefault="True" bypassonlocal="True"/> 
     <bypasslist> 
     <add address="http://xyz.com" /> 
     <add address="http://www.example.com" /> 
     </bypasslist> 
    </defaultProxy> 
    </system.net> 

Eventuali richieste che non vogliamo passare attraverso il proxy, possono essere aggiunti alla <bypasslist>. Ha il vantaggio aggiunto che, ogni volta che la libreria di classi dell'API di Google cambia, non dobbiamo preoccuparci di riscrivere il codice per configurare il proxy. :-)

+0

Puoi darmi l'elenco degli articoli che hai aggiunto in elenco di bypass