Analítica API API Error 403: "El usuario no tiene ninguna cuenta de Google Analytics"


146

Estoy creando un script, basado en la guía paso a paso de Google Analytics de esta página:

https://developers.google.com/analytics/resources/tutorials/hello-analytics-api

La autorización se realiza sin problemas, hasta que intenta acceder a los datos. El código de retorno es 403 y el mensaje de error es:

El usuario no tiene ninguna cuenta de Google Analytics

Este mensaje no tiene sentido: mi cuenta tiene datos de Google Analytics, rastrea varios sitios web y puedo acceder a ellos desde el navegador web sin ningún problema. Permití la API de Analytics a través de la consola de las API de Google, y el acceso a la API me da los datos correctos.

Respuestas:


302

Yo tuve este problema también. Lo arreglé agregando la dirección de correo electrónico de mi cuenta de servicio al perfil de Google Analytics al que quería que accediera.

Obtuve la dirección de correo electrónico (algo así como xxxxxx@developer.gserviceaccount.com) para la cuenta de servicio buscando en la pestaña "Acceso API" en la consola API de Google.

Luego, seguí las instrucciones de Google para agregar una dirección de correo electrónico a un perfil de Analytics . Ahora todo funciona como se esperaba.

¡Buena suerte!


8
¡Esta es la mejor respuesta, lo probé y funciona de maravilla! Muchas gracias @Sebastian!
mongotop

1
si tiene más de un perfil en su cuenta y desea acceder a sus datos utilizando la API de GA, debe seguir agregando xxxxx@developer.gserviceaccount.com al perfil de Analytics, o hay una forma más eficiente sin involucrar una forma manual. ¡Gracias!
mongotop 01 de

2
@mongotop de nada! Desafortunadamente, no conozco una forma más eficiente de hacer esto; háganos saber en los comentarios si encuentra uno.
SM

1
Si agrega el usuario en el nivel de propiedad, asegúrese de agregarlo a la vista adecuada, ya que la interfaz de usuario de Analytics a veces es engañosa
tacone

1
Eres una leyenda, me he pasado todo el día intentando arreglar esto.
dspacejs

80

Simplemente agregue su correo electrónico dado (formato de 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com)

a los administradores de usuarios:

El usuario no tiene ninguna cuenta de Google Analytics

Ojalá te ayude


2
Lamentablemente, el error no desapareció. Mensaje fijo: GAPI: Error al solicitar datos de la cuenta. Error: "{" error ": {" errores ": [{" dominio ":" global "," razón ":" Permisos insuficientes "," mensaje ":" El usuario no tiene ninguna cuenta de Google Analytics "}]," código ": 403," mensaje ":" El usuario no tiene ninguna cuenta de Google Analytics. "}}"
JosFabre

1
@Lev durante 3 años, esta respuesta sigue siendo válida. Solo esperaba que Google lo mejorara, pero no. Se hizo perfectamente: D
itsnikolay

28

Estaba enfrentando el mismo problema. Se resolvió agregando la identificación de correo electrónico del usuario de la cuenta de servicio ( your account@yourwebsite-dev.iam.gserviceaccount.com) a los usuarios en su cuenta de Analytics debajo de

Página de inicio de Analytics -> Administrador (panel izquierdo) -> Administración de usuarios -> agregar (haga clic en el signo más en el lado derecho del menú) -> Agregar nuevo usuario -> Agregue la identificación de correo electrónico para ingresar direcciones de correo electrónico.

ingrese la descripción de la imagen aquí

Ahora, esto resolverá el problema.


1
¿Por qué no se acepta esta respuesta? Paso 2 días tratando de averiguar por qué seguir el tutorial que me lleva a este error.
Ragnar

8

Se menciona en un comentario anterior, pero si agrega la dirección de correo electrónico en la Gestión de usuarios de su cuenta , no funcionará. Debe hacer clic en Gestión de usuarios debajo de la parte de visualización de la pantalla.

ingrese la descripción de la imagen aquí


Sé que han pasado muchos años, pero ahora agregué la dirección a la cuenta , y parece que funciona bien.
Peter

i no puede ver el User Managementenlace bajo Vista en mi final
aldrien.h

4

También recibirá este error si nunca ha iniciado sesión con la cuenta de Google con la que está intentando autenticarse.


66
Voy a dejar esto aquí: Enlace a la interfaz web de Google Analytics
naXa

¿Y dónde está la contraseña para el correo electrónico? Intenté la contraseña que Google me muestra antes de descargar el certificado .p12, pero no es válida
ymakux

2

Estaba recibiendo el error 403 hasta que cambié los permisos de la cuenta de correo electrónico desde Google Analytics de 'Leer y analizar' a otra cosa, lo guardé y luego cambié los permisos nuevamente a 'Leer y analizar' y funcionó.


Esto ayudó Creé una nueva "Cuenta de servicio" en API y autenticación / credenciales; y guardó el par de claves .p12. Luego entré en la consola de administración de usuarios de Analytics y agregué la dirección de correo electrónico del usuario del servicio. La autorización .p12 con la API de PHP funciona, pero solo si selecciono "Leer y analizar" solo en la lista de permisos.
Johnny O

2

En caso de que eso no funcione, intente abrir su archivo JSON que ha descargado y busque client_emaily copie esa dirección de correo electrónico y agréguela al archivo de visualización

Haga clic en

Analytics-Home Page ->Admin(left pane) -> User Management -> add (click on plus sign on right side of the menu) -> Add new User -> Add the client_email address which you copied.

Si eso todavía no funciona

Analytics-Homepage-> Admin ->Views->User Management(Click on add(+) symbol, add this ccopied client_email address and give permissions and save it.

1

Estaba golpeando el error 403. Estos pasos me ayudaron. Para ser claros, estaba tratando de hacer que la muestra de Google "HelloAnalytics.php" funcionara con OAuth (sin interacción del usuario, adecuada para el trabajo cron, etc.).

Después de habilitar la API de Analytics, creé una nueva "Cuenta de servicio" en API y autenticación / credenciales; y guardó el par de claves .p12. Luego entré en la consola de administración de usuarios de Analytics y agregué la dirección de correo electrónico de ese usuario de servicio.

La autorización .p12 con la API de PHP funciona si marco solo "Leer y analizar" solo en la lista de permisos. Si agrego "Administrar usuarios" y / o "Editar", obtengo el 403. Espero que esto sea útil, estuve trabajando en esto durante un par de horas ...


0

También tuve este problema y descubrí que el problema era que había solicitado demasiados permisos. La consola del desarrollador dice que solicite ambos http://www.googleapis.com/auth/analytics y http://www.googleapis.com/auth/analytics.readonly permisos. Esto no funcionó cuando también estaba usando el subreclamo. Un subreclamo le indica a Google que emita un token de acceso que opera en nombre de otro usuario , en mi caso, la cuenta de Google que posee la cuenta de servicio. Eliminé el analyticspermiso y me quedé analytics.readonlycon el reclamo secundario:

{
  "iss":"123123123123123-xxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",
  "sub":"me.example@gmail.com"
  "scope":"http://www.googleapis.com/auth/analytics",
  ...
}

El token emitido por Bearer me permite realizar (al menos algunas) consultas de Google Analytics a perfiles que son propiedad de cuentas de Google completamente diferentes, pero que se han compartido (solo lectura) con mi usuario de gmail (me.example@gmail.com) .


1
¿Qué es sub cuando estoy usando el SDK del cliente de Google Analytics?
Dejell

¡Desearía que esto funcionara! Recibo el siguiente error cuando trato de hacer lo mismo: Google_Auth_Exception [401]: Error al actualizar el token OAuth2, mensaje: '{"error": "una_autorized_client", "error_description": "Cliente o alcance no autorizado en la solicitud". } '
SEoF

Te sugiero que sigas así. Todavía usamos esto para obtener datos en tiempo real de GA cada pocos minutos, ¡todo usando bash, nada menos!
mogsie

0

Me las arreglé para solucionar esto asegurándome de que

client = Google :: APIClient.new (: application_name => 'X',: application_version => '1')

la variable de nombre de la aplicación 'X anterior era el nombre de la CUENTA en el panel de GA, no el nombre de PROPIEDAD, que en mi caso era la URL real del sitio al que quiero acceder.

Confuso, pero afortunadamente arreglado (¡no gracias a Google!)


Estoy tratando de encontrar esta 'X'. ¿Puedes publicar una captura de pantalla?
Dejell

0

El problema ocurre porque no proporcionamos un argumento "sub". A menos que proporcionemos esto, la llamada se realiza en nombre de ese largo correo electrónico de cuenta de servicio.

¡Tan solo proporcione un subargumento, con un correo electrónico al que ya ha dado acceso en el informe y las cosas deberían funcionar bien!


0

Recibí el mismo error, ya que no inicié sesión en google analytics. Así que lo resolví iniciando sesión en la cuenta de análisis.


0

Este mensaje que recibimos cuando no se otorga permiso para client_email, en google alalytics , client_emailse obtiene del archivo JSON . para otorgarle permiso a client_emailsu aplicación, diríjase al sitio de Google Analytics y haga clic en "Administrador (icono de configuración)"

ingrese la descripción de la imagen aquí

obtendrá la lista del menú a la derecha, haga clic en "Ver administración de usuarios"

ingrese la descripción de la imagen aquí

Allí verá el icono "+" y "agregar usuario",

ingrese la descripción de la imagen aquí

una vez que haga clic en eso, debe agregar client_emailel "campo de dirección de correo electrónico" y guardarlo, ¡debería estar listo!

ingrese la descripción de la imagen aquí



-1

En lugar de usar una cuenta de servicio, puede evitar la necesidad de agregar nuevos permisos de usuario (según las principales respuestas en este hilo) usando OAuth client ID credenciales.

Vaya al panel de credenciales de API y haga clic en "Crear credenciales" -> "ID de cliente OAuth". Luego, debe obtener un ID de cliente y un secreto de cliente que necesitará para autenticar la API.

Ahora puede usar OAuth2WebServerFlowpara autenticarse por uso. Aquí hay un ejemplo de python3:

from apiclient.discovery import build
from oauth2client.client import OAuth2WebServerFlow

# TODO: Fill these in...
CLIENT_ID = ''
CLIENT_SECRET = ''
VIEW_ID = ''

flow = OAuth2WebServerFlow(
    CLIENT_ID, CLIENT_SECRET,
    'https://www.googleapis.com/auth/analytics.readonly',
    redirect_uri='urn:ietf:wg:oauth:2.0:oob'
)

authorize_url = flow.step1_get_authorize_url()
print('Receive code from:\n%s\n' % authorize_url)
code = input('Enter code here:').strip()
credentials = flow.step2_exchange(code)

api = build('analyticsreporting', 'v4', credentials=credentials)
body={
    'reportRequests': [{
        'viewId': VIEW_ID,
        'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}],
        'metrics': [{'expression': 'ga:sessions'}],
        'dimensions': [{'name': 'ga:country'}]
    }]
}

data = api.reports().batchGet(body=body).execute()
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.