setaccesstype refreshtoken playground google for example oauth google-api oauth-2.0 google-analytics-api garb-gem

oauth - playground - refreshtoken api google



OAuth 2.0 con la API de Google Analytics v3 (5)

Estoy agregando una respuesta de PHP: es posible que pueda ajustarla o convertirla en código de atuendo / rubí.

Debería poder utilizar Analytics con cuentas de servicio ahora. De hecho, tendrá que usar una clave privada en lugar de un token de acceso.

Crear una aplicación en la Consola API
Básicamente, vas a la Consola API de Google y creas una aplicación.
Habilitar Google Analytics en la pestaña de servicios.
En la pestaña Acceso a la API, cree una nueva ID de OAuth (botón Crear otra ID de cliente ...), seleccione la cuenta de servicio y descargue su clave privada (Generar nueva clave ... enlace). Tendrás que subir la clave a tu servidor web más tarde.

En la página Acceso a la API, en la sección Cuenta de servicio, copie la dirección de correo electrónico (@ developer.gserviceaccount.com) y agregue un nuevo usuario con esta dirección de correo electrónico a su perfil de Google Analytics. Si no haces esto, obtendrás algunos errores agradables

Código
Descargue el último cliente PHP de Google fuera de SVN (desde la línea de comandos svn checkout http://google-api-php-client.googlecode.com/svn/trunk/ google-api-php-client-read-only ).

Ahora puede acceder a la API de Analytics en el código:

require_once ''Google_Client.php''; require_once ''contrib/Google_AnalyticsService.php''; $keyfile = ''dsdfdss0sdfsdsdfsdf44923dfs9023-privatekey.p12''; // Initialise the Google Client object $client = new Google_Client(); $client->setApplicationName(''Your product name''); $client->setAssertionCredentials( new Google_AssertionCredentials( ''[email protected]'', array(''https://www.googleapis.com/auth/analytics.readonly''), file_get_contents($keyfile) ) ); // Get this from the Google Console, API Access page $client->setClientId(''11122233344.apps.googleusercontent.com''); $client->setAccessType(''offline_access''); $analytics = new Google_AnalyticsService($client); // We have finished setting up the connection, // now get some data and output the number of visits this week. // Your analytics profile id. (Admin -> Profile Settings -> Profile ID) $analytics_id = ''ga:1234''; $lastWeek = date(''Y-m-d'', strtotime(''-1 week'')); $today = date(''Y-m-d''); try { $results = $analytics->data_ga->get($analytics_id, $lastWeek, $today,''ga:visits''); echo ''<b>Number of visits this week:</b> ''; echo $results[''totalsForAllResults''][''ga:visits'']; } catch(Exception $e) { echo ''There was an error : - '' . $e->getMessage(); }

Solía ​​poder consultar la API de Google Analytics con el nombre de usuario y la contraseña de mi cuenta. Google ahora está utilizando OAuth para la autenticación, lo cual es genial ... El único problema es que solo necesito UN token de acceso. No quiero permitir que otros usuarios obtengan sus datos analíticos.

Sólo quiero ser capaz de recuperar mis datos. ¿Hay alguna forma de generar un token de acceso solo para mi aplicación o mi cuenta de análisis?

Sé que tales soluciones existen ... Por ejemplo, Twitter proporciona lo que llaman un "usuario único" para aplicaciones que no requieren que un usuario específico inicie sesión.

Una vez más, todo lo que estoy tratando de lograr aquí es obtener mis datos analíticos a través de la API.

¿Hay una manera de hacerlo correctamente?


Google tiene la ''Cuenta de servicio'' (llama a las API de Google en nombre de su aplicación en lugar de a un usuario final), pero la forma en que funciona es un poco diferente, ya que no utilizará tokens de acceso sino una clave privada.

Puede encontrar más detalles en https://developers.google.com/accounts/docs/OAuth2ServiceAccount


Hola encontré una solución, funciona para mí.

tienes que cambiar este

immediate: true

a

immediate: false

y parece

function checkAuth() { gapi.auth.authorize({ client_id: clientId, scope: scopes, immediate: false}, handleAuthResult); }



Terry Seidler respondió esto muy bien para php. Quiero añadir un ejemplo de código java .

Configuración de la consola api

Comience por hacer los pasos necesarios en la consola de Google Api, como lo explicó Terry:

Básicamente, vas a la Consola API de Google y creas una aplicación. Habilitar Google Analytics en la pestaña de servicios. En la pestaña Acceso a la API, cree una nueva ID de OAuth (botón Crear otra ID de cliente ...), seleccione la cuenta de servicio y descargue su clave privada (Generar nueva clave ... enlace). Tendrás que subir la clave a tu servidor web más tarde. En la página Acceso a la API, en la sección Cuenta de servicio, copie la dirección de correo electrónico (@ developer.gserviceaccount.com) y agregue un nuevo usuario con esta dirección de correo electrónico a su perfil de Google Analytics. Si no haces esto, obtendrás algunos errores agradables

Consigue las bibliotecas necesarias.

Descargue el cliente java de Google Analytics desde: https://developers.google.com/api-client-library/java/apis/analytics/v3

O añada las siguientes dependencias de maven:

<dependency> <groupId>com.google.apis</groupId> <artifactId>google-api-services-analytics</artifactId> <version>v3-rev94-1.18.0-rc</version> </dependency> <dependency> <groupId>com.google.http-client</groupId> <artifactId>google-http-client-jackson</artifactId> <version>1.18.0-rc</version> </dependency>

Ahora para el código:

public class HellowAnalyticsV3Api { private static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); private static final JsonFactory JSON_FACTORY = new JacksonFactory(); public void analyticsExample() { // This is the .p12 file you got from the google api console by clicking generate new key File analyticsKeyFile = new File(<p12FilePath>); // This is the service account email address that you can find in the api console String apiEmail = <[email protected]>; GoogleCredential credential = new GoogleCredential.Builder() .setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(apiEmail) .setServiceAccountScopes(Arrays.asList(AnalyticsScopes.ANALYTICS_READONLY)) .setServiceAccountPrivateKeyFromP12File(analyticsPrivateKeyFile).build(); Analytics analyticsService = new Analytics.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) .setApplicationName(<your application name>) .build(); String startDate = "2014-01-03"; String endDate = "2014-03-03"; String mertrics = "ga:sessions,ga:timeOnPage"; // Use the analytics object build a query Get get = analyticsService.data().ga().get(tableId, startDate, endDate, mertrics); get.setDimensions("ga:city"); get.setFilters("ga:country==Canada"); get.setSort("-ga:sessions"); // Run the query GaData data = get.execute(); // Do something with the data if (data.getRows() != null) { for (List<String> row : data.getRows()) { System.out.println(row); } } }