Analytics Google API-Fehler 403: "Benutzer hat kein Google Analytics-Konto"


147

Ich erstelle ein Skript, das auf der Schritt-für-Schritt-Anleitung von Google Analytics auf dieser Seite basiert:

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

Die Autorisierung erfolgt ohne Probleme, bis versucht wird, auf Daten zuzugreifen. Der Rückkehrcode lautet 403 und die Fehlermeldung lautet:

Der Nutzer hat kein Google Analytics-Konto

Diese Nachricht hat keinen Sinn: Mein Konto enthält Google Analytics-Daten, die mehrere Websites verfolgen, und ich kann problemlos über einen Webbrowser darauf zugreifen. Ich habe die Analytics-API über die Google APIs-Konsole zugelassen, und der API-Zugriff gibt mir die richtigen Daten.

Antworten:


302

Ich hatte auch dieses Problem. Ich habe das Problem behoben, indem ich die E-Mail-Adresse für mein Dienstkonto zum Google Analytics-Profil hinzugefügt habe, auf das es zugreifen soll.

Ich habe die E-Mail-Adresse (etwa xxxxxx@developer.gserviceaccount.com) für das Dienstkonto erhalten, indem ich in der Google APIs-Konsole auf der Registerkarte "API-Zugriff" nachgesehen habe.

Anschließend habe ich die Anweisungen von Google zum Hinzufügen einer E-Mail-Adresse zu einem Analytics-Profil befolgt . Jetzt funktioniert alles wie erwartet.

Viel Glück!


8
Dies ist die beste Antwort, ich habe es versucht und es funktioniert wie Charme! Vielen Dank @Sebastian!
Mongotop

1
Wenn Sie mehr als ein Profil in Ihrem Konto haben und über die GA-API auf deren Daten zugreifen möchten, sollten Sie dem Analytics-Profil weiterhin xxxxx@developer.gserviceaccount.com hinzufügen, oder es gibt einen effizienteren Weg ohne manuellen Weg. Vielen Dank!
Mongotop

2
@ Mongotop Gern geschehen! Leider kenne ich keinen effizienteren Weg, dies zu tun - lassen Sie es uns in den Kommentaren wissen, wenn Sie einen finden.
SM

1
Wenn Sie den Benutzer auf Eigenschaftsebene hinzufügen, stellen Sie sicher, dass Sie ihn der richtigen Ansicht hinzufügen, da die Analytics-Benutzeroberfläche manchmal irreführend ist
Tacone

1
Du bist eine Legende, ich habe den ganzen Tag damit verbracht, dies einzurichten.
dspacejs

80

Fügen Sie einfach Ihre angegebene E-Mail-Adresse hinzu (Format von 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com)

an Benutzermanager:

Der Nutzer hat kein Google Analytics-Konto

Wünschte, es hilft dir


2
Leider ist der Fehler nicht verschwunden. Standbildnachricht: GAPI: Kontodaten konnten nicht angefordert werden. Fehler: "{" Fehler ": {" Fehler ": [{" Domäne ":" global "," Grund ":" unzureichende Berechtigungen "," Nachricht ":" Benutzer hat kein Google Analytics-Konto. "}]," Code ": 403," Nachricht ":" Benutzer hat kein Google Analytics-Konto. "}}"
JosFabre

1
@ Lev über 3 Jahre diese Antwort ist immer noch gültig. Ich habe nur gehofft, Google hat es verbessert, aber nein. Es wurde perfekt gemacht: D
itsnikolay

28

Ich stand vor dem gleichen Problem. Es wurde behoben, indem die E-Mail-ID des Dienstkontonutzers ( your account@yourwebsite-dev.iam.gserviceaccount.com) zu den Benutzern in Ihrem Analytics-Konto hinzugefügt wurde.

Analytics-Homepage -> Admin (linker Bereich) -> Benutzerverwaltung -> Hinzufügen (klicken Sie auf das Pluszeichen auf der rechten Seite des Menüs) -> Neuen Benutzer hinzufügen -> Fügen Sie die E-Mail-ID in die eingegebenen E-Mail-Adressen ein.

Geben Sie hier die Bildbeschreibung ein

Dies wird das Problem lösen.


1
Warum wird diese Antwort nicht akzeptiert? Ich verbringe 2 Tage damit herauszufinden, warum das Befolgen des Tutorials mich zu diesem Fehler führt.
Ragnar

8

Es wird in einem Kommentar oben erwähnt, aber wenn Sie die E-Mail-Adresse unter der Benutzerverwaltung für Ihr Konto hinzufügen , funktioniert es nicht. Sie müssen im Ansichtsteil des Bildschirms auf die Benutzerverwaltung klicken .

Geben Sie hier die Bildbeschreibung ein


Ich weiß, dass viele Jahre vergangen sind, aber ich habe jetzt die Adresse zum Konto hinzugefügt , und es sieht so aus, als ob es gut funktioniert.
Peter

Ich kann den User ManagementLink unter Ansicht an meinem Ende nicht sehen
aldrien.h

4

Diese Fehlermeldung wird auch angezeigt, wenn Sie sich noch nie mit dem Google-Konto angemeldet haben, bei dem Sie sich authentifizieren möchten.


6
Ich lasse dies einfach hier: Link zur Google Analytics-Weboberfläche
naXa

Und wo ist das Passwort für E-Mail? Ich habe versucht, ein Passwort, das Google mir vor dem Herunterladen des .p12-Zertifikats anzeigt, aber es ist nicht gültig
ymakux

2

Ich habe den 403-Fehler erhalten, bis ich die Berechtigungen des E-Mail-Kontos in Google Analytics von "Lesen & Analysieren" in etwas anderes geändert, gespeichert und dann die Berechtigungen wieder in "Lesen & Analysieren" geändert habe und es funktioniert hat.


Das hat geholfen. Ich habe ein neues "Dienstkonto" unter APIs & Auth / Credentials erstellt. und speicherte das .p12-Schlüsselpaar. Ich ging dann in die Analytics-Benutzerverwaltungskonsole und fügte die E-Mail-Adresse des Dienstbenutzers hinzu. Die .p12-Autorisierung mit der PHP-API funktioniert, aber nur, wenn ich "Lesen & Analysieren" nur in der Berechtigungsliste abhake.
Johnny O

2

Falls dies nicht funktioniert, versuchen Sie, Ihre heruntergeladene JSON-Datei zu öffnen. Suchen Sie nach client_emaildieser E-Mail-Adresse, kopieren Sie sie und fügen Sie sie der Ansichtsdatei hinzu

Klicke auf

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.

Wenn das immer noch nicht funktioniert

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

2

Diese Botschaft , die wir erhalten , wenn keine Erlaubnis erteilt client_email, in den Google alalytics , client_emailist , dass Sie bekam aus der JSON - Datei . Um die Berechtigung für die client_emailVerwendung in Ihrer App zu erteilen , rufen Sie die Google Analytics-Website auf und klicken Sie auf "Admin (Einstellungssymbol)".

Geben Sie hier die Bildbeschreibung ein

Sie erhalten die Menüliste richtig, klicken Sie dort auf "Benutzerverwaltung anzeigen"

Geben Sie hier die Bildbeschreibung ein

Dort sehen Sie das Symbol "+" und "Benutzer hinzufügen".

Geben Sie hier die Bildbeschreibung ein

Sobald Sie darauf klicken, müssen Sie client_emaildas Feld "E-Mail-Adresse" hinzufügen und speichern. Sie sollten bereit sein!

Geben Sie hier die Bildbeschreibung ein


1

Ich habe den 403-Fehler getroffen. Diese Schritte haben mich darum herum gebracht. Um es klar auszudrücken, habe ich versucht, Googles Beispiel "HelloAnalytics.php" mit OAuth zum Laufen zu bringen (ohne Benutzerinteraktion, geeignet für Cron-Jobs usw.).

Nach dem Aktivieren der Analytics-API habe ich unter APIs & Auth / Credentials ein neues "Dienstkonto" erstellt. und speicherte das .p12-Schlüsselpaar. Ich ging dann in die Analytics-Benutzerverwaltungskonsole und fügte die E-Mail-Adresse des Dienstbenutzers hinzu.

Die .p12-Autorisierung mit der PHP-API funktioniert, wenn ich abhake nur „Read & Analyze“ nur in der Liste Berechtigungen. Wenn ich "Benutzer verwalten" und / oder "Bearbeiten" hinzufüge, erhalte ich die 403. Ich hoffe, das ist hilfreich, ich habe ein paar Stunden daran gearbeitet ...


0

Der Benutzer, für den Sie die API verwenden möchten, hat seinen GA-Dienst nicht aktiviert.
Nur ein Google-Konto zu haben, reicht nicht aus .

... Wenn Sie jedoch nur ein Google-Konto haben, erhalten Sie nicht automatisch Zugriff auf Analytics. Zunächst müssen Sie sich für Google Analytics registrieren, ein einmaliger, einfacher Vorgang ...


0

Ich hatte auch dieses Problem und stellte fest, dass das Problem darin bestand, dass ich zu viele Berechtigungen angefordert hatte. Die Entwicklerkonsole fordert Sie auf, sowohl nach Berechtigungen http://www.googleapis.com/auth/analytics als auch nach http://www.googleapis.com/auth/analytics.readonly Berechtigungen zu fragen . Dies hat nicht funktioniert, als ich auch den subAnspruch verwendet habe. Ein subAnspruch weist Google an, ein Zugriffstoken auszustellen, das im Auftrag eines anderen Nutzers ausgeführt wird - in meinem Fall des Google-Kontos, dem das Dienstkonto gehört. Ich entfernte die analyticsErlaubnis und blieb analytics.readonlybei der Unterforderung:

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

Mit dem ausgestellten Bearer-Token kann ich (zumindest einige) Google Analytics-Abfragen an Profile durchführen, die Eigentum völlig anderer Google-Konten sind, die jedoch für meinen Google Mail-Nutzer (me.example@gmail.com) freigegeben (schreibgeschützt) sind. .


1
Was ist sub, wenn ich das Google Analytics-Client-SDK verwende?
Dejell

Ich wünschte, das hätte funktioniert! Ich erhalte die folgende Fehlermeldung, wenn ich das Gleiche versuche: Google_Auth_Exception [401]: Fehler beim Aktualisieren des OAuth2-Tokens, Meldung: '{"error": "unauthorized_client", "error_description": "Nicht autorisierter Client oder Bereich in Anfrage." } '
SEoF

Ich schlage vor, Sie bleiben dran. Wir verwenden dies immer noch, um alle paar Minuten Echtzeitdaten von GA abzurufen, alle mit Bash, nicht weniger!
Mogsie

0

Ich habe es geschafft, dies zu beheben, indem ich dafür gesorgt habe, dass die

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

Die Anwendungsnamenvariable 'X oben war der ACCOUNT-Name im GA-Dashboard, nicht der PROPERTY-Name, der in meinem Fall die tatsächliche URL der Site war, auf die ich zugreifen möchte.

Verwirrend, aber dankbar behoben (ohne Dank an Google!)


Ich versuche dieses 'X' zu finden. Kannst du einen Screenshot posten?
Dejell

0

Das Problem tritt auf, da wir kein "Unter" -Argument angeben. Sofern wir dies nicht angeben, erfolgt der Anruf im Namen dieser E-Mail mit dem langen Dienstkonto.

Geben Sie einfach ein Unterargument mit einer E-Mail an, auf die Sie bereits im Bericht Zugriff haben, und die Dinge sollten gut funktionieren!


0

Ich habe den gleichen Fehler erhalten, da ich mich nicht bei Google Analytics angemeldet habe. Also hatte ich es gelöst, indem ich mich im Analytics-Konto angemeldet hatte.


0

Anstatt ein Dienstkonto zu verwenden, können Sie die Notwendigkeit umgehen, neue Benutzerberechtigungen hinzuzufügen (gemäß den häufigsten Antworten in diesem Thread) OAuth client ID Anmeldeinformationen .

Wechseln Sie zum Dashboard mit den API-Anmeldeinformationen und klicken Sie auf "Anmeldeinformationen erstellen" -> "OAuth-Client-ID". Anschließend sollten Sie eine Client-ID und ein Client-Geheimnis erhalten, die Sie zur Authentifizierung der API benötigen.

Jetzt können Sie die OAuth2WebServerFlowAuthentifizierung pro Verwendung verwenden. Hier ist ein Python3-Beispiel:

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()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.