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);
}
Puedes usar un token de actualización. Almacene el token de actualización en un archivo de configuración segura o de db, luego utilícelo para mostrar las estadísticas.
El acceso sin conexión de la API de Google con OAuth 2.0 Refresh Token le dará una idea de cómo capturar y luego almacenar su token de actualización.
Consulte también Uso de OAuth 2.0 para aplicaciones de servidor web - Acceso sin conexión
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);
}
}
}