Errore 403 dell'API di Google Analytics: "L'utente non ha un account Google Analytics"


146

Sto creando uno script, basato sulla guida dettagliata di Google Analytics da questa pagina:

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

L'autorizzazione viene eseguita senza problemi fino a quando non tenta di accedere ai dati. Il codice di ritorno è 403 e il messaggio di errore è:

L'utente non ha alcun account Google Analytics

Questo messaggio non ha senso: il mio account ha dati analitici di google, tracciamento di più siti Web e posso accedervi dal browser web senza problemi. Ho consentito l'API di Analytics tramite la console delle API di Google e l'accesso all'API mi sta fornendo dati corretti.

Risposte:


302

Ho avuto anche questo problema. L'ho corretto aggiungendo l'indirizzo email per il mio account di servizio al profilo di Google Analytics a cui volevo accedesse.

Ho ottenuto l'indirizzo email (qualcosa come xxxxxx@developer.gserviceaccount.com) per l'account del servizio guardando nella scheda "Accesso API" nella console delle API di Google.

Quindi, ho seguito le istruzioni di Google per l'aggiunta di un indirizzo email a un profilo Analytics . Ora tutto funziona come previsto.

In bocca al lupo!


8
Questa è la risposta migliore, l'ho provata e funziona come un incanto !! Grazie mille @Sebastian!
mongotop,

1
se hai più di un profilo nel tuo account e desideri accedere ai loro dati utilizzando l'API GA, dovresti continuare ad aggiungere xxxxx@developer.gserviceaccount.com al profilo Analytics, oppure esiste un modo più efficiente senza coinvolgere un modo manuale. Grazie!
mongotop,

2
@mongotop sei il benvenuto! Sfortunatamente non conosco un modo più efficiente per farlo: fatecelo sapere nei commenti se ne trovate uno.
SM,

1
Se aggiungi l'utente a livello di Proprietà assicurati di aggiungerlo alla vista corretta, poiché l'interfaccia utente di Analytics a volte è fuorviante
tacone

1
Sei una leggenda, ho passato l'intera giornata a provare a metterlo su.
dspacejs,

80

Basta aggiungere la tua email (formato di 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com)

ai gestori utenti:

L'utente non ha alcun account Google Analytics

Vorrei che ti aiuti


2
Purtroppo l'errore non è scomparso. Messaggio fisso: GAPI: impossibile richiedere i dati dell'account. Errore: "{" errore ": {" errori ": [{" dominio ":" globale "," motivo ":" insufficientPermissions "," messaggio ":" L'utente non ha alcun account Google Analytics. "}]," codice ": 403," message ":" L'utente non ha alcun account Google Analytics. "}}"
JosFabre

1
@Lev per 3 anni questa risposta è ancora valida. Speravo solo che Google lo migliorasse, ma no. È stato fatto perfettamente: D
itsnikolay

28

Stavo affrontando lo stesso problema. È stato risolto aggiungendo l'id e-mail dell'utente dell'account del servizio ( your account@yourwebsite-dev.iam.gserviceaccount.com), agli utenti nel tuo account Analytics sotto-

Home page di Analytics -> Amministratore (riquadro sinistro) -> Gestione utenti -> aggiungi (fai clic sul segno più sul lato destro del menu) -> Aggiungi nuovo utente -> Aggiungi l'id e-mail in inserisci indirizzi e-mail.

inserisci qui la descrizione dell'immagine

Ora, questo risolverà il problema.


1
Perché questa risposta non è accettata? Trascorro 2 giorni cercando di scoprire perché seguendo il tutorial che mi porta a questo errore.
Ragnar,

8

È menzionato in un commento sopra, ma se aggiungi l'indirizzo e-mail in Gestione utenti per il tuo account , non funzionerà. È necessario fare clic sul User Management sotto la vista parte dello schermo.

inserisci qui la descrizione dell'immagine


So che sono passati molti anni, ma ora ho aggiunto l'indirizzo all'account e sembra che funzioni bene.
Peter,

non riesco a vedere il User Managementlink in Visualizza dalla mia parte
aldrien.h

4

Riceverai anche questo errore se non hai mai effettuato l'accesso con l'account Google con cui stai tentando di autenticarti.


6
Lascio questo qui: Link all'interfaccia web di Google Analytics
naXa

E dov'è la password per l'e-mail? Ho provato la password che google mi mostra prima di scaricare il certificato .p12 ma non è valido
ymakux

2

Stavo ricevendo l'errore 403 finché non ho modificato le autorizzazioni dell'account e-mail dall'interno di Google Analytics da "Leggi e analizza" a qualcos'altro, l'ho salvato e quindi ho cambiato le autorizzazioni in "Leggi e analizza" e ha funzionato.


Questo ha aiutato. Ho creato un nuovo "Account di servizio" in API e Auth / Credentials; e salvato la coppia di chiavi .p12. Sono quindi entrato nella console di gestione utenti di Analytics e ho aggiunto l'indirizzo e-mail dell'utente del servizio. L'autorizzazione .p12 tramite l'API PHP funziona, ma solo se seleziono "Leggi e analizza" solo nell'elenco delle autorizzazioni.
Johnny O,

2

Nel caso in cui non funzionasse, prova ad aprire il file JSON che hai scaricato e cerca client_emaile copia quell'indirizzo e-mail e aggiungilo al file Visualizza

Clicca su

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 ancora non funziona

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

1

Stavo colpendo l'errore 403. Questi passaggi mi hanno fatto aggirare. Per essere chiari, stavo provando a far sì che l'esempio di Google "HelloAnalytics.php" funzionasse con OAuth (senza l'interazione dell'utente, adatto per cron job ecc.).

Dopo aver abilitato l'API di Analytics, ho creato un nuovo "Account di servizio" in API e Auth / Credentials; e salvato la coppia di chiavi .p12. Sono quindi entrato nella console di gestione utenti di Analytics e ho aggiunto l'indirizzo email dell'utente del servizio.

L'autorizzazione .p12 tramite l'API PHP funziona se seleziono solo "Leggi e analizza" solo nell'elenco delle autorizzazioni. Se aggiungo "Gestisci utenti" e / o "Modifica", ottengo il 403. Spero che sia utile, stavo macinando questo per un paio d'ore ...


0

Ho avuto anche questo problema e ho scoperto che il problema era che avevo chiesto troppe autorizzazioni. La Console per gli sviluppatori dice di chiedere per entrambi http://www.googleapis.com/auth/analytics e http://www.googleapis.com/auth/analytics.readonly permessi. Questo non ha funzionato quando stavo usando anche il subreclamo. Un subreclamo indica a Google di emettere un token di accesso che opera per conto di un altro utente , nel mio caso l'account Google che possiede l'account del servizio. Ho rimosso l' analyticsautorizzazione e bloccato analytics.readonlycon la rivendicazione secondaria:

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

Il token Bearer emesso mi consente di eseguire (almeno alcune) query di Google Analytics su profili di proprietà di account Google completamente diversi, ma che sono stati condivisi (sola lettura) con il mio utente Gmail (me.example@gmail.com) .


1
Che cos'è il sub quando utilizzo l'SDK client di Google Analytics?
Dejell,

Vorrei che funzionasse! Ricevo il seguente errore quando provo a fare lo stesso: Google_Auth_Exception [401]: errore durante l'aggiornamento del token OAuth2, messaggio: '{"error": "unauthorized_client", "error_description": "Client non autorizzato o ambito nella richiesta." } "
SEoF

Ti suggerisco di continuare. Lo usiamo ancora per raccogliere dati in tempo reale da GA ogni pochi minuti, tutti usando bash, nientemeno!
mogsie,

0

Sono riuscito a risolvere questo problema assicurandomi che

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

la variabile del nome dell'applicazione 'X sopra era il nome ACCOUNT sulla dashboard GA, non il nome PROPERTY, che nel mio caso era l'URL effettivo del sito a cui voglio accedere.

Confuso, ma per fortuna risolto (senza ringraziamenti a Google!)


Sto cercando di trovare questa "X". Puoi pubblicare uno screenshot?
Dejell,

0

Il problema si verifica poiché non forniamo un argomento "secondario". A meno che non lo forniamo, la chiamata avviene per conto dell'email dell'account di servizio lungo.

Quindi basta fornire un argomento secondario, con un'e-mail a cui hai già dato accesso al rapporto e le cose dovrebbero funzionare bene!


0

Ho avuto lo stesso errore, poiché non ho eseguito l'accesso a Google Analytics. Quindi l'ho risolto accedendo all'account di analisi.


0

Questo messaggio si ottiene quando il permesso concesso client_email, nei alalytics google , client_emailè che hai dal file JSON . per concedere l'autorizzazione client_emailche stai utilizzando nella tua app, vai al sito di Google Analytics e fai clic su "Amministratore (icona impostazione)"

inserisci qui la descrizione dell'immagine

otterrai l'elenco dei menu, fai clic su "Visualizza gestione utenti"

inserisci qui la descrizione dell'immagine

Lì vedrai l'icona "+" e "aggiungi utente",

inserisci qui la descrizione dell'immagine

una volta fatto clic su di esso, è necessario aggiungere client_emailnel "campo indirizzo e-mail" e salvarlo, si dovrebbe essere pronti per andare!

inserisci qui la descrizione dell'immagine


-1

L'utente per il quale stai tentando di utilizzare l'API non ha abilitato il suo servizio GA.
Semplicemente avere un account google non è abbastanza .

... Tuttavia, avere un account Google non ti consente automaticamente di accedere ad Analytics. Innanzitutto, devi registrarti a Google Analytics, una procedura semplice e una tantum ...


-1

Invece di utilizzare un account di servizio, è possibile eludere la necessità di aggiungere un'aggiunta di nuove autorizzazioni utente (secondo le risposte principali in questo thread) utilizzando le OAuth client IDcredenziali.

Vai alla dashboard delle credenziali API e fai clic su "Crea credenziali" -> "ID client OAuth". Successivamente dovresti ottenere un ID client e un segreto client per l'autenticazione dell'API.

Ora puoi usare OAuth2WebServerFlowper autenticarti in base all'uso. Ecco un esempio di 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()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.