Erro 403 da API do Google Analytics: "O usuário não tem nenhuma conta do Google Analytics"

147

Estou criando um script, com base no guia passo a passo do Google Analytics a partir desta página:

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

A autorização é feita sem problemas, até tentar acessar os dados. O código de retorno é 403 e a mensagem de erro é:

O usuário não tem nenhuma conta do Google Analytics

Esta mensagem não faz sentido: minha conta possui dados do Google Analytics, acompanhando vários sites e posso acessá-los no navegador da Web sem problemas. Permiti a API do Analytics pelo console de APIs do Google e o acesso à API está fornecendo os dados corretos.

user989501
fonte

Respostas:

302

Eu tive esse problema também. Corrigi-o adicionando o endereço de e-mail da minha conta de serviço ao perfil do Google Analytics que eu queria que ele acessasse.

Eu obtive o endereço de e-mail (algo como [email protected]) da conta de serviço, procurando na guia "Acesso à API" no console de APIs do Google.

Segui as instruções do Google para adicionar um endereço de e-mail a um perfil do Analytics . Agora tudo está funcionando como esperado.

Boa sorte!

SM
fonte
8
Esta é a melhor resposta, eu tentei e funciona como charme !! Muito obrigado @Sebastian!
Mongotop
1
se você possui mais de um perfil em sua conta e deseja acessar os dados deles usando a API do GA, continue adicionando [email protected] ao perfil do Google Analytics ou existe uma maneira mais eficiente sem envolver uma maneira manual. Obrigado!
Mongotop
2
@ mongotop você é bem-vindo! Infelizmente, não conheço uma maneira mais eficiente de fazer isso - informe-nos nos comentários, se você encontrar um.
SM
1
Se você adicionar o usuário a nível de propriedade certifique-se de adicioná-lo à visão adequada, como a UI Analytics é por vezes enganosa
Tacone
1
Você é uma lenda, passei o dia inteiro tentando configurar isso.
precisa saber é o seguinte
80

Basta adicionar seu e-mail (formato de 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com)

para gerentes de usuários:

O usuário não tem nenhuma conta do Google Analytics

Desejo que ajude você

itsnikolay
fonte
2
Infelizmente, o erro não desapareceu. Mensagem parada: GAPI: falha ao solicitar dados da conta. Erro: "{" error ": {" errors ": [{" domain ":" global "," reason ":" insufficientPermissions "," message ":" O usuário não tem nenhuma conta do Google Analytics. "}]," código ": 403," message ":" O usuário não tem nenhuma conta do Google Analytics. "}}"
JosFabre 27/08/2015
1
@ Lev mais de 3 anos, esta resposta ainda é válida. Eu só esperava que o Google o melhorasse, mas não. Foi feito perfeitamente: D
itsnikolay
28

Eu estava enfrentando o mesmo problema. Para resolver esse problema, adicione o ID de e-mail do usuário da conta de serviço ( your [email protected]) aos usuários da sua conta do Analytics em

Página inicial do Analytics -> Admin (painel esquerdo) -> Gerenciamento de usuários -> adicionar (clique no sinal de adição no lado direito do menu) -> Adicionar novo usuário -> Adicionar o ID do email ao inserir endereços de email.

insira a descrição da imagem aqui

Agora, isso resolverá o problema.

Vikash Singh
fonte
1
Por que essa resposta não é aceita? Passei 2 dias tentando descobrir por que seguir o tutorial me levou a esse erro.
Ragnar
8

Ele é mencionado em um comentário acima, mas se você adicionar o endereço de email no Gerenciamento de usuários da sua conta , ele não funcionará. Você precisa clicar no Gerenciamento de usuários, na parte de exibição da tela.

insira a descrição da imagem aqui

Lukos
fonte
Sei que muitos anos se passaram, mas agora adicionei o endereço à conta e parece que funciona bem.
Peter
i não pode ver o User Managementlink em exibição no meu fim
aldrien.h
4

Você também receberá esse erro se nunca tiver feito login com a conta do Google com a qual está tentando se autenticar.

Andrew Bullock
fonte
6
Eu só vou deixar isso aqui: Link para a interface web do Google Analytics
NAXA
E onde está a senha do email? Tentei senha que o Google mostra-me antes de baixar .p12 certificado mas não é válido
ymakux
2

Eu estava recebendo o erro 403 até alterar as permissões da conta de e-mail de dentro do Google Analytics de 'Ler e analisar' para outra coisa, salvá-lo e alterá-las novamente para 'Ler e analisar' e funcionou.

Pearce
fonte
Isso ajudou. Criei uma nova "Conta de serviço" em APIs e autenticação / credenciais; e salvou o par de chaves .p12. Entrei no console de gerenciamento de usuários do Analytics e adicionei o endereço de e-mail do usuário do serviço. A autorização .p12 usando a API PHP funciona, mas apenas se eu marcar "Ler e analisar" apenas na lista de permissões.
Johnny O
2

Caso isso não funcione, tente abrir o arquivo JSON que você baixou e procure por client_email e copie esse endereço de email e adicione-o ao arquivo Exibir

Clique em

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.

Se isso ainda não funcionar

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

Essa mensagem é recebida quando nenhuma permissão concedida client_email, no google alalytics , client_emailé obtida do arquivo JSON . para conceder permissão para client_emailuso em seu aplicativo, acesse o site do Google Analytics e clique em "Admin (ícone de configuração)"

insira a descrição da imagem aqui

você terá a lista de menus correta, clique em "Exibir gerenciamento de usuários"

insira a descrição da imagem aqui

Lá você verá o ícone "+" e "adicionar usuário",

insira a descrição da imagem aqui

Depois de clicar client_emailnele, você precisa adicionar o "campo de endereço de e-mail" e salvá-lo; você deve estar pronto!

insira a descrição da imagem aqui

Código
fonte
1

Eu estava atingindo o erro 403. Esses passos me contornaram. Para deixar claro, eu estava tentando fazer com que o exemplo "HelloAnalytics.php" do Google trabalhasse com o OAuth (sem interação com o usuário, adequado para tarefas cron etc.).

Após ativar a API do Analytics, criei uma nova "Conta de serviço" em APIs e autenticação / credenciais; e salvou o par de chaves .p12. Entrei no console de gerenciamento de usuários do Analytics e adicionei o endereço de e-mail do usuário do serviço.

A autorização .p12 usando a API PHP funciona se eu marcar apenas "Ler e analisar" apenas na lista de permissões. Se eu adicionar "Gerenciar usuários" e / ou "Editar", obtenho a 403. Espero que isso seja útil, eu fiquei pensando nisso por algumas horas ...

Johnny O
fonte
0

O usuário para o qual você está tentando usar a API não ativou o serviço do GA.
Simplesmente ter uma conta do Google não é suficiente .

... No entanto, apenas ter uma conta do Google não concede acesso automaticamente ao Analytics. Primeiro, você deve se registrar no Google Analytics, um processo simples e único ...

bldoron
fonte
0

Eu também tinha esse problema e descobri que havia solicitado muitas permissões. O console do desenvolvedor diz para solicitar ambos http://www.googleapis.com/auth/analytics e http://www.googleapis.com/auth/analytics.readonly permissões. Isso não funcionou quando eu também estava usando a subreivindicação. Uma subreivindicação instrui o Google a emitir um token de acesso que opera em nome de outro usuário - no meu caso, a conta do Google que possui a conta de serviço. Eu removi a analyticspermissão e permaneci analytics.readonlycom a reivindicação secundária:

{
  "iss":"123123123123123-xxxxxxxxxxxxxxxxxxxxxxxx@developer.gserviceaccount.com",
  "sub":"[email protected]"
  "scope":"http://www.googleapis.com/auth/analytics",
  ...
}

O token do Bearer emitido me permite fazer (pelo menos algumas) consultas do Google Analytics a perfis pertencentes a contas do Google completamente diferentes, mas que foram compartilhadas (somente leitura) com meu usuário do gmail ([email protected]) .

mogsie
fonte
1
O que é secundário quando estou usando o SDK do cliente do Google Analytics?
Dejell 15/09/14
Eu gostaria que isso funcionasse! Estou recebendo o seguinte erro quando tento fazer o mesmo: Google_Auth_Exception [401]: Erro ao atualizar o token OAuth2, mensagem: '{"error": "unauthorized_client", "error_description": "error_description": "Cliente não autorizado ou escopo na solicitação". } '
SEoF
Eu sugiro que você continue assim. Ainda usamos isso para obter dados em tempo real do GA a cada poucos minutos, todos usando o bash, nada menos!
mogsie
0

Consegui consertar isso, certificando-me de que o

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

a variável de nome do aplicativo 'X acima era o nome de CONTA no painel do GA, não o nome de PROPRIEDADE, que no meu caso era o URL real do site que desejo acessar.

Confuso, mas felizmente corrigido (sem agradecimentos ao Google!)

Jonathan_W
fonte
Estou tentando encontrar esse 'X'. Você pode postar uma captura de tela?
Dejell 15/09/14
0

O problema acontece porque não fornecemos um argumento "sub". A menos que forneçamos isso, a chamada acontece em nome desse email longo da conta de serviço.

Portanto, basta fornecer um sub-argumento, com um e-mail ao qual você já tenha acesso no relatório, e as coisas devem funcionar bem!

Sony Kadavan
fonte
0

Eu recebi o mesmo erro, pois não fiz login no google analytics. Então, eu o resolvi entrando na conta de análise.

Rumman Siddiqui
fonte
0

Em vez de usar uma conta de serviço, você pode evitar a necessidade de adicionar novas permissões de usuário (de acordo com as principais respostas deste segmento) usando OAuth client IDcredenciais.

Acesse o painel de credenciais da API e clique em "Criar credenciais" -> "ID do cliente OAuth". Posteriormente, você deve obter um ID do cliente e um segredo do cliente, necessário para autenticar a API.

Agora você pode usar OAuth2WebServerFlowpara autenticar em uma base por uso. Aqui está um exemplo 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()
AlexG
fonte