Domanda

Ho credenziali di un account con accesso a Google Analytics,

Sto cercando di utilizzare l'API di reporting core di analisi http://code.google.com/apis/analytics/docs/gdata/home.html

Ho trovato esempi che utilizzano setUserCredentials Calling Nome utente/password, ma ho visto commenti che è meno sicuro/ha un limite di richiesta basso (e non esiste nell'ultimo client).

Inoltre, mi sembrano esempi che utilizzano OAuth, ma richiedono l'interazione dell'utente e concedono l'accesso all'account Google degli utenti.

Tuttavia, sto cercando di eseguire un servizio che non richiede alcuna interazione utente e si connette a un account Google predefinito (non correlato all'utente che lo visualizza).

Posso quindi archiviare i risultati in un database e gli utenti finali possono interrogare i risultati dal database.

Ho visto informazioni sull'uso di AccessType = offline quando si accede per la prima volta, che restituisce un token di accesso e un RefreshToken.http://code.google.com/apis/accounts/docs/oauth2webserver.html#offline

Nel mio esempio, tuttavia, l'utente finale non accederà mai all'applicazione. Potrei avere un'applicazione di amministrazione separata che ottiene un token di aggiornamento e memorizza il token di aggiornamento nella tabella di configurazione/ricerca? Quindi l'applicazione principale può utilizzare il token di aggiornamento che tira dalla tabella di configurazione/ricerca e ottenere un token di accesso per poter interrogare l'account Google Analytics.

Sto cercando un esempio C# che utilizza AccessType = offline e separa il recupero del token di aggiornamento e utilizzando il token di aggiornamento per ottenere un token di accesso per interrogare l'account Google Analytics.

È stato utile?

Soluzione

Crea la tua app https://code.google.com/apis/console/

Per la tua app, accendi l'accesso a Google Analytics e crea un ID client OAuth 2.0 per il tuo sito Web.

Sfoglia a:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=YOUR_APP_ID.apps.googleusercontent.com&access_type=offline&scope=https://www.googleapis.com/auth/analytics.readonly&redirect_uri=HTTP://YOUR_CALL_BACK_URL

Dopo aver cambiato Your_app_id, Your_call_back_url ai valori pertinenti.

Importante da includere Access_Type = offline.

Accesso alla sovvenzione stampa, questo si reindirirà a HTTP://YOUR_CALL_BACK_URL?code=THIS_IS_YOUR_CODE. Copia il codice nell'URL.

Con il codice, richiedere il token di aggiornamento utilizzando il prompt CMD.

curl -d "code=THIS_IS_YOUR_CODE&client_id=YOUR_APP_ID.apps.googleusercontent.com&client_secret=YOUR_APPS_SECRET_CODE&redirect_uri=HTTP://YOUR_CALL_BACK_URL&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token

Dopo aver cambiato This_is_your_code, Your_app_id, Your_apps_secret_code, Your_call_back_url ai valori pertinenti.

Registra il refrow_token restituito.

Scarica l'ultima versione delle librerie Core Reporting v3.0 .NEThttp://code.google.com/p/google-api-dotnet-client/wiki/downloads

C'è un bug nella versione corrente di Google.apis.analytics.v3.cs, per correggere questa copia il codice in questo file sulla soluzione locale (e non fare riferimento a Google.apis.analytics.v3.bin)http://code.google.com/p/google-api-dotnet-client/source/browse/services/google.apis.analytics.v3.cs?repo=samples&name=20111123-1.1.4344-beta

E modificare le dimensioni della proprietà da a List<system.string> a a string.

O otterrai un errore come me e questo ragazzo ha fatto http://www.ovotiadesign.co.uk/blog/using-the-google-analytics-api-with-c-shar/

Puoi quindi utilizzare il token di aggiornamento, per generare un token di accesso senza interazione utente e utilizzare il token di accesso per eseguire un rapporto contro Google Analytics.

using System;
using DotNetOpenAuth.OAuth2;
using Google.Apis.Authentication.OAuth2;
using AnalyticsService = Google.Apis.Analytics.v3.AnalyticsService;

class Program
    {
        public static void Main()
        {
            var client = new WebServerClient(GoogleAuthenticationServer.Description, "YOUR_APP_ID.apps.googleusercontent.com", "YOUR_APPS_SECRET_CODE");
            var auth = new OAuth2Authenticator<WebServerClient>(client, Authenticate);
            var asv = new AnalyticsService(auth);
            var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");
            request.Dimensions = "ga:pagePath";
            request.Sort = "-ga:visitors";
            request.MaxResults = 5;
            var report =  request.Fetch();
            Console.ReadLine();
        }

        private static IAuthorizationState Authenticate(WebServerClient client)
        {
            IAuthorizationState state = new AuthorizationState(new string[]{}) { RefreshToken = "REFRESH_TOKEN" };

            client.RefreshToken(state);
            return state;
        }
    }

Altri suggerimenti

Ottima risposta Ian e mi ha aiutato ad andare nella direzione corretta più di qualsiasi altra risposta che ho potuto trovare online. Qualcosa deve essere cambiato nell'oggetto AnalyticsService perché la linea:

var request = asv.Report.Get("2012-02-20", "2012-01-01", "ga:visitors", "ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID");

non ha funzionato per me e ho dovuto usare quanto segue:

var request = asv.Data.Ga.Get("ga:YOUR_GOOGLE_ANALYTICS_ACCOUNT_ID", "2012-01-01", "2012-02-20", "ga:visitors");

Spero che questo aiuti agli altri come la tua risposta mi ha aiutato. Grazie!

La risposta di Ian mi ha aiutato molto, ma ho continuato a ricevere un errore eseguendo il comando Curl. Ha fatto alcune ricerche e hanno scoperto che i passaggi per ottenere il codice di accesso e il token di aggiornamento possono essere facili https://code.google.com/oauthplayground/ e controllando le tue impostazioni di configurazione OAuth. In alto a destra della pagina c'è un pulsante Impostazioni. Selezionato "Usa le tue credenziali OAuth". Puoi ottenere il tuo codice di accesso e richiedere un token di aggiornamento tutto da qui.

Spero che sia di aiuto.

Puoi ottenere manualmente un token di aggiornamento dal Oauth Playground. Se hai bisogno di un token di aggiornamento per un account di servizio come me, assicurati

  1. Fare clic sulle impostazioni a destra.
  2. Dai un'occhiata Usa le tue credenziali OAuth
  3. Compila il tuo ID client e segreto
  4. Chiudi le impostazioni
  5. Clicca il ricaricare Pulsante nel passaggio 2
  6. Quindi salva il token di aggiornamento per l'uso nella tua app
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top