API de Google Analytics: "El usuario no tiene permisos suficientes para esta cuenta."


Estoy escribiendo una aplicación Ruby que accede a la API de Google Analytics para obtener información del experimento.

La aplicación se conecta y autentica usando una cuenta de Servicio de Google a través de la siguiente función:

def connect
  ...
  @@client = Google::APIClient.new(:application_name => 'My Service App', 
                                    :application_version => '1.0.0')
  key_file = Rails.root.join('config', 'privatekey.p12').to_s
  key_secret = 'somesecret'
  key = Google::APIClient::PKCS12.load_key(key_file, key_secret)
  asserter = Google::APIClient::JWTAsserter.new(
    SECRETS[:google_service_account_email],
    ['https://www.googleapis.com/auth/yt-analytics.readonly',
     'https://www.googleapis.com/auth/analytics.readonly'
    ],
    key
  )
  @@client.authorization = asserter.authorize()
  ...
end

...que autentica y descubre ambas API sin problemas.

Usar el cliente contra la API de YouTube Analytics funciona sin problemas. Usar la misma cuenta exacta para acceder a la API de Analytics a través de...

response = @@client.execute({
  # 'analytics is the API object retrieved via discover_api()
  :api_method => analytics.management.experiments.list, 
  :parameters => {
    'accountId' => 'AAAAAAAA',
    'profileId' => 'PPPPPPPP',
    'webPropertyId' => 'UA-WWWWWWWW-#'
  }
})

Resulta en un error 403 respuesta:

{"domain":"global","reason":"insufficientPermissions","message":"User does not have sufficient permissions for this account."}

En lo que respecta a la autorización, he comprobado dos veces la cuenta [email protected] :

  • Tiene permisos completos para la interfaz web de Google Analytics. He iniciado sesión usando el [email protected] cuenta y fue capaz de ver los mismos experimentos que intenté enumerar.
  • Ha habilitado la API de Analytics. Dentro de la consola de API, confirmé en la sección Servicios que el elemento Analytics API es enciéndelo. (Al igual que YouTube Analytics es.)
  • Estoy utilizando los valores accountId, profileID y WebPropertyID apropiados. Copiado directamente desde la interfaz web de Google Analytics.

Dado que la cuenta de servicio puede acceder al menos a una API (YouTube Analytics), y la cuenta asociada ([email protected]) puede acceder a la interfaz web de Analytics, parece haber algo mal con la cuenta de servicio que accede a la API de Analytics en particular.

¿Alguna idea?

Temas similares:

Author: Community, 2014-01-07

8 answers

Asegúrese de dar el correo electrónico de la cuenta de servicio (algo como [email protected]) permisos para leer / escribir desde su vista GA.

Admin > Ver > Administración de usuarios > "Agregar permisos para:"

 49
Author: Goose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-23 13:11:16

¡Elige la identificación correcta!

En mi caso estaba usando las credenciales correctas (id de cuenta, account secret -> authorization_code -> access_token) Y tenía los permisos de correo electrónico configurados correctamente, pero estaba usando el id de cuenta en la página Admin > Account settings y simplemente agregando ga: al frente.

El id que realmente necesita es el id de la tabla! (o ese es el que funcionó para mí, al menos, ya que la mayoría de la gente aquí está mencionando el id de la cuenta, que no trabaja para mí.). Usted puede encontrar que uno aquí: https://ga-dev-tools.appspot.com/account-explorer /

introduzca la descripción de la imagen aquí

Y luego puede consultar como

service.get_ga_data(TABLE_ID,'2017-03-25','2017-03-25','ga:users,ga:pageviews')

Encontré que esta API estaba mal documentada en general y la interfaz de usuario no estaba clara. Pero tal vez sea solo yo.

 11
Author: Simon Somlai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-25 17:38:25

Si sigue viendo este mensaje después de agregar su correo electrónico de desarrollador a analytic user.

Es posible que necesite agregar ámbito al objeto, antes de nuevo Google_Service_Analytics (client client);

Client client - >setScopes ("https://www.googleapis.com/auth/plus.login");

Pasé todo el día tratando de resolver esto!

 2
Author: Qin Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-07 15:25:55

También tuve que ir a la consola del desarrollador y habilitar la API para que funcionara. Vaya a la consola de desarrolladores y seleccione su proyecto y habilite las API que desea usar.

 2
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-01 08:35:46

Incluso después de agregar el correo electrónico al nivel de cuenta en analytics, todavía tenía el mismo problema de permisos, pero la siguiente sugerencia ayudó, pero no lo resolvió:

Client client - >setScopes ("https://www.googleapis.com/auth/plus.login");

Eso no funcionó para mí, pero esto sí:

Client client - >setScopes ("https://www.googleapis.com/auth/analytics");

Https:// ahora es necesario para autenticarse.

 2
Author: user2760338,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-05 12:28:42

Asegúrese de que está ingresando el table_id

(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
 1
Author: Shane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-13 19:44:24

Si usted es nuevo solo para hacerle saber 3 Paso procedimiento requerido

  1. Habilite la API de informes de Google Analytics y luego cree una cuenta de correo electrónico del servicio (ID de cliente OAuth)
  2. Agregar y dar permiso a este correo electrónico de servicio en google console
  3. Agregar y dar permiso a esta cuenta de correo electrónico de servicio en el seguimiento de Google analytics - > Gestión de usuarios
 0
Author: Zahid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-09 00:49:50

Si alguien tiene más vista debe usar el ID de vista.

 -2
Author: Laci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-05 15:03:18