it-swarm.dev

API do Google Analytics: "O usuário não tem permissões suficientes para esta conta".

Estou escrevendo um aplicativo Ruby que acessa a API do Google Analytics para extrair algumas informações da experiência.

O aplicativo se conecta e autentica usando uma conta de serviço do Google por meio da seguinte função:

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 e descobre as duas APIs sem problemas.

O uso do cliente na API do YouTube Analytics funciona sem problemas. Usando a mesma conta exata para acessar a API do Google Analytics por meio 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-#'
  }
})

Resultados em uma resposta de erro 403:

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

Em relação à autorização, verifiquei novamente a conta [email protected]:

  • Tem permissões completas para a interface da web do Google Analytics. Eu entrei usando a conta [email protected] e consegui visualizar os mesmos experimentos que tentei listar.
  • Ativou a API do Google Analytics. No Console de API, confirmei na seção "Serviços" que o item Analytics APIestá alternado para ATIVADO. (Assim como o YouTube Analytics é.)
  • Estou usando os valores AccountID, ProfileID e WebPropertyID apropriados. Copiado diretamente da interface da web do Google Analytics.

Como a conta de serviço pode acessar pelo menos uma API (YouTube Analytics), e a conta associada ([email protected]) pode acessar a interface da web do Google Analytics, parece haver algo errado com a conta de serviço que acessa a API do Google Analytics em particular .

Alguma ideia?

Tópicos semelhantes:

33
David Elner

Certifique-se de conceder ao e-mail da conta de serviço (algo como [email protected]) permissões para ler/gravar da sua exibição GA.

Admin> Ver> Gerenciamento de usuários> "Adicionar permissões para:"

50
Goose

Escolha o id certo!

No meu caso, eu estava usando as credenciais corretas (ID da conta, segredo da conta -> código_de_ativação -> access_token) E tinha as permissões de e-mail configuradas corretamente, mas eu estava usando o ID da conta nas configurações Admin> Account e simplesmente adicionando o ga: na frente. 

O id que você realmente precisa é o id da tabela! (Ou foi o que funcionou para mim pelo menos já que a maioria das pessoas aqui está mencionando o id da conta, o que não funcionou para mim). Você pode encontrar um aqui: https://ga-dev-tools.appspot.com/account-Explorer/

enter image description here

E então você pode consultar como

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

Eu achei esta API mal documentada no geral e a interface do usuário não estava clara. Mas talvez seja só eu.

12
Simon Somlai

Verifique se você está digitando o table_id correto 

(ie. GetProfiles(oauth_token)
tableid_input = "ga:72848696")
2
Shane

Se você ainda vir essa mensagem depois de adicionar seu e-mail de desenvolvedor ao usuário analítico.

Talvez seja necessário adicionar o escopo ao objeto antes do novo Google_Service_Analytics ($ client);

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

Passei o dia inteiro tentando resolver isso!

2
Qin Wang

Eu também tive que ir ao console do desenvolvedor e ativar a API para que ela funcionasse. Vá para o console do desenvolvedor e selecione seu projeto e ative as APIs desejadas.

2
John

Mesmo depois de adicionar o e-mail ao nível da conta em análises, eu ainda tinha o mesmo problema de permissão, mas a sugestão a seguir ajudou, mas não resolveu:

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

Isso não funcionou para mim, mas isso aconteceu:

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

https: // agora é necessário para autenticar.

2
user2760338

Se você é novo apenas para que você saiba o procedimento de 3 etapas necessárias 

  1. Ative a API de relatórios do Google Analytics e crie uma conta de e-mail de serviço (código do cliente OAuth)
  2. Adicione e dê permissão para este e-mail de serviço no console do google 
  3. Adicione e dê permissão a essa conta de e-mail do serviço no acompanhamento de análises do Google -> Gerenciamento de usuários 
0
Zahid