Account di servizio Google Analytics OAuth AccessType = Offline C #

Ho le credenziali di un account con accesso a Google Analytics,

Sto cercando di utilizzare l’API di Analytics Core Reporting http://code.google.com/apis/analytics/docs/gdata/home.html

Ho trovato esempi che usano nome utente / password per chiamare setUserCredentials, ma ho visto commenti questo è meno sicuro / ha un limite di richieste basso (E non esiste nel client più recente).

Inoltre, mi sembrano esempi che utilizzano oauth, ma richiedono l’interazione dell’utente e concedono l’accesso all’account google dell’utente.

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

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

Ho visto informazioni sull’utilizzo di AccessType = Offline al primo accesso, che restituisce un token di accesso e un refreshtoken. http://code.google.com/apis/accounts/docs/OAuth2WebServer.html#offline

Tuttavia, nel mio esempio, l’utente non accederà mai all’applicazione. Posso 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 prelevando dalla tabella di configurazione / ricerca e ottenere un token di accesso per poter eseguire query sull’account Google Analytics.

Sto cercando un esempio C # che utilizza AccessType = Offline e separa il recupero del token di aggiornamento e utilizza il token di aggiornamento per ottenere un token di accesso per interrogare l’account google analytics.

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

Per la tua app, triggers 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 modificato YOUR_APP_ID , YOUR_CALL_BACK_URL ai valori pertinenti.

Importante includere access_type = offline .

Premi Grant Access, questo reindirizzerà 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 modificato THIS_IS_YOUR_CODE , YOUR_APP_ID , YOUR_APPS_SECRET_CODE , YOUR_CALL_BACK_URL con i valori pertinenti.

Registra il refresh_token restituito.

Scarica l’ultima versione delle librerie Core Reporting V3.0 .net http://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 nella 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 proprietà Dimensions da un List in una string .

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

È quindi ansible utilizzare il token di aggiornamento, per generare un token di accesso senza l’interazione dell’utente e utilizzare il token di accesso per eseguire un report su 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(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; } } 

Ottima risposta Ian e mi ha aiutato ad andare nella direzione corretta più di ogni altra risposta che ho trovato online. Qualcosa deve essere cambiato nell’object 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 il seguente:

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

Speriamo che questo aiuti gli altri come la tua risposta mi ha aiutato. Grazie!

La risposta di Ian mi ha aiutato molto ma ho continuato a ricevere un errore durante l’esecuzione del comando di arricciatura. Ha fatto alcune ricerche e ha scoperto che i passaggi per ottenere il codice di accesso e il token di aggiornamento possono essere semplificati andando su https://code.google.com/oauthplayground/ e controllando le impostazioni di configurazione di oAuth. In alto a destra della pagina c’è un pulsante delle 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 questo ti aiuti.

È ansible ottenere manualmente un token di aggiornamento da OAuth Playground . Se hai bisogno di un token di aggiornamento per un account di servizio come lo ero, assicurati

  1. Clicca sulle impostazioni a destra.
  2. Verifica Utilizza le tue credenziali OAuth
  3. Inserisci l’ID cliente e il segreto
  4. Chiudi le impostazioni
  5. Fai clic sul pulsante Aggiorna al punto 2
  6. Quindi salva il token di aggiornamento da utilizzare nella tua app