Analytics Google API Błąd 403: „Użytkownik nie ma żadnego konta Google Analytics”

147

Tworzę skrypt na podstawie przewodnika krok po kroku Google Analytics z tej strony:

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

Autoryzacja odbywa się bez problemów, dopóki nie spróbuje uzyskać dostępu do danych. Kod powrotu to 403, a komunikat o błędzie to:

Użytkownik nie ma żadnego konta Google Analytics

Ta wiadomość nie ma sensu: moje konto zawiera dane Google Analytics, śledzę wiele witryn i mogę uzyskać do nich dostęp z przeglądarki internetowej bez problemu. Zezwoliłem na API Analytics za pośrednictwem konsoli interfejsów API Google, a dostęp do interfejsu API zapewnia mi właściwe dane.

user989501
źródło

Odpowiedzi:

302

Ja też miałem ten problem. Naprawiłem to, dodając adres e-mail mojego konta usługi do profilu Google Analytics, do którego chciałem mieć dostęp.

Otrzymałem adres e-mail (na przykład [email protected]) do konta usługi, sprawdzając kartę „API Access” w konsoli Google API.

Następnie postępowałem zgodnie z instrukcjami Google dotyczącymi dodawania adresu e-mail do profilu Analytics . Teraz wszystko działa zgodnie z oczekiwaniami.

Powodzenia!

SM
źródło
8
To najlepsza odpowiedź, próbowałem i działa jak urok! Wielkie dzięki @Sebastian!
mongotop
1
Jeśli masz więcej niż jeden profil na swoim koncie i chcesz uzyskać dostęp do ich danych za pomocą GA API, powinieneś nadal dodawać adres [email protected] do profilu Analytics lub jest bardziej efektywny sposób bez angażowania ręcznego. Dzięki!
mongotop
2
@mongotop nie ma za co! Niestety nie znam bardziej efektywnego sposobu na zrobienie tego - daj nam znać w komentarzach, jeśli taki znajdziesz.
SM
1
Jeśli dodasz użytkownika na poziomie usługi, pamiętaj o dodaniu go do odpowiedniego widoku, ponieważ interfejs użytkownika Analytics czasami wprowadza w błąd
tacone
1
Jesteś legendą, spędziłem cały dzień próbując to ustawić.
dspacejs
80

Po prostu dodaj podany adres e-mail (format 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com )

do menedżerów użytkowników:

Użytkownik nie ma żadnego konta Google Analytics

Chciałbym, żeby ci to pomogło

itsnikolay
źródło
2
Niestety błąd nie zniknął. Nadal komunikat: GAPI: nie udało się zażądać danych konta. Błąd: "{" błąd ": {" błędy ": [{" domena ":" globalny "," przyczyna ":" niewystarczające uprawnienia "," komunikat ":" Użytkownik nie ma żadnego konta Google Analytics. "}]," code ": 403," message ":" Użytkownik nie ma konta Google Analytics. "}}"
JosFabre
1
@Lev ponad 3 lata ta odpowiedź jest nadal aktualna. Miałem tylko nadzieję, że Google to ulepszyło, ale nie.
Zrobiono
28

Miałem ten sam problem. Problem został rozwiązany przez dodanie identyfikatora e-mail użytkownika konta usługi ( your [email protected]) do użytkowników na koncie Analytics w obszarze

Strona główna Analytics -> Administrator (lewy panel) -> Zarządzanie użytkownikami -> dodaj (kliknij znak plus po prawej stronie menu) -> Dodaj nowego użytkownika -> Dodaj identyfikator e-mail w polu wprowadź adresy e-mail.

wprowadź opis obrazu tutaj

Teraz to rozwiąże problem.

vikash singh
źródło
1
Dlaczego ta odpowiedź nie jest akceptowana? Spędziłem 2 dni, próbując dowiedzieć się, dlaczego postępując zgodnie z samouczkiem prowadzącym mnie do tego błędu.
Ragnar
8

Jest to wspomniane w komentarzu powyżej, ale jeśli dodasz adres e-mail w sekcji Zarządzanie użytkownikami dla swojego konta , nie zadziała. Musisz kliknąć Zarządzanie użytkownikami w części widoku ekranu.

wprowadź opis obrazu tutaj

Lukos
źródło
Wiem, że minęło wiele lat, ale teraz dodałem adres do konta i wygląda na to, że ładnie działa.
Peter,
nie widzę User Managementlinku w sekcji Wyświetl po mojej stronie
aldrien.h
4

Ten błąd pojawi się również, jeśli nigdy nie logowałeś się na konto Google, za pomocą którego próbujesz się uwierzytelnić.

Andrew Bullock
źródło
6
Zostawię to tutaj: Link do interfejsu internetowego Google Analytics
naXa
A gdzie jest hasło do poczty elektronicznej? Wypróbowałem hasło, które Google pokazuje mi przed pobraniem certyfikatu .p12, ale jest nieprawidłowe
ymakux
2

Otrzymywałem błąd 403, dopóki nie zmieniłem uprawnień konta e-mail z poziomu Google Analytics z „Czytaj i analizuj” na coś innego, zapisałem go, a następnie zmieniłem uprawnienia z powrotem na „Odczyt i analiza” i zadziałało.

Pearce
źródło
To pomogło. Utworzyłem nowe „Konto usługi” w obszarze API & Auth / Credentials; i zapisał parę kluczy .p12. Następnie przeszedłem do konsoli zarządzania użytkownikami Analytics i dodałem adres e-mail użytkownika usługi. Autoryzacja .p12 przy użyciu PHP API działa, ale tylko wtedy, gdy zaznaczę „Odczyt i analiza” tylko na liście uprawnień.
Johnny O
2

Na wszelki wypadek, jeśli to nie zadziała, spróbuj otworzyć pobrany plik JSON i wyszukaj client_email i skopiuj ten adres e-mail i dodaj go do pliku View File

Kliknij

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.

Jeśli to nadal nie zadziała

Analytics-Homepage-> Admin ->Views->User Management(Click on add(+) symbol, add this ccopied client_email address and give permissions and save it.
Bity proszę
źródło
2

Ta wiadomość, gdy nie mamy zezwolenie udzielone client_emailw alalytics google , client_emailto masz z pliku JSON . aby udzielić uprawnień, client_emailktórych używasz w swojej aplikacji, przejdź do witryny Google Analytics i kliknij „Administrator (ikona ustawień)”

wprowadź opis obrazu tutaj

zobaczysz listę menu, kliknij „Wyświetl zarządzanie użytkownikami”

wprowadź opis obrazu tutaj

Tam zobaczysz ikonę „+” i „dodaj użytkownika”,

wprowadź opis obrazu tutaj

po kliknięciu na to musisz dodać client_emailw polu adresu e-mail i zapisać je, wszystko powinno być gotowe!

wprowadź opis obrazu tutaj

Kod
źródło
1

Uderzałem w błąd 403. Te kroki pozwoliły mi to obejść. Żeby było jasne, próbowałem uzyskać próbkę Google „HelloAnalytics.php” działającą z OAuth (bez interakcji użytkownika, odpowiednia do zadań cron itp.).

Po włączeniu interfejsu API Analytics utworzyłem nowe „Konto usługi” w obszarze API & Auth / Credentials; i zapisał parę kluczy .p12. Następnie przeszedłem do konsoli zarządzania użytkownikami Analytics i dodałem ten adres e-mail Usługobiorcy.

.p12 autoryzacja za pomocą interfejsu API PHP działa, jeśli ja zaznaczać tylko „read & Analyze” tylko na liście uprawnień. Jeśli dodam „Zarządzaj użytkownikami” i / lub „Edytuj”, otrzymam 403. Mam nadzieję, że to jest pomocne, szlifowałem to przez kilka godzin ...

Johnny O
źródło
0

Użytkownik, dla którego próbujesz użyć interfejsu API, nie włączył swojej usługi GA.
Samo posiadanie konta Google nie wystarczy .

... Jednak samo posiadanie konta Google nie daje automatycznie dostępu do Analytics. Najpierw musisz zarejestrować się w Google Analytics, jednorazowy, prosty proces ...

bldoron
źródło
0

Miałem też ten problem i stwierdziłem, że problem polegał na tym, że poprosiłem o zbyt wiele uprawnień. Konsola programisty mówi, aby zapytać o oba uprawnienia http://www.googleapis.com/auth/analytics i http://www.googleapis.com/auth/analytics.readonly uprawnienia. To nie zadziałało, gdy korzystałem również z suboświadczenia. subRoszczenie przesyła zlecenie Google wydać żeton dostępu, który działa w imieniu innego użytkownika - w moim przypadku konta Google, które jest właścicielem konta usługi. Usunąłem analyticspozwolenie i utknąłem z analytics.readonlyroszczeniem podrzędnym:

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

Wydany token okaziciela umożliwia mi wysyłanie (przynajmniej niektórych) zapytań Google Analytics do profili, które są własnością zupełnie innych kont Google, ale które zostały udostępnione (tylko do odczytu) mojemu użytkownikowi Gmaila ([email protected]) .

mogsie
źródło
1
Co to jest sub, gdy używam pakietu SDK klienta Google Analytics?
Dejell
Chciałbym, żeby to zadziałało! Podczas próby zrobienia tego samego pojawia się następujący błąd: Google_Auth_Exception [401]: Błąd podczas odświeżania tokena OAuth2, komunikat: '{"error": "unauthorized_client", "error_description": "Nieautoryzowany klient lub zakres w żądaniu." } '
SEoF
Sugeruję, żebyś się tym zajął. Nadal używamy tego do pobierania danych w czasie rzeczywistym z GA co kilka minut, wszystko przy użyciu basha, nie mniej!
mogsie
0

Udało mi się to naprawić, upewniając się, że

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

nazwa aplikacji zmienna 'X powyżej była nazwą KONTA na pulpicie nawigacyjnym GA, a nie nazwą PROPERTY, która w moim przypadku była rzeczywistym adresem URL witryny, do której chcę uzyskać dostęp.

Mylące, ale na szczęście naprawione (bez dzięki Google!)

Jonathan_W
źródło
Próbuję znaleźć ten „X”. Czy możesz opublikować zrzut ekranu?
Dejell
0

Problem występuje, ponieważ nie podajemy argumentu „sub”. O ile tego nie udostępnimy, rozmowa jest wykonywana w imieniu tego długiego adresu e-mail konta usługi.

Po prostu podaj argument podrzędny z adresem e-mail, któremu już dałeś dostęp w raporcie, a wszystko powinno działać dobrze!

Sony Kadavan
źródło
0

Otrzymałem ten sam błąd, ponieważ nie zalogowałem się do Google Analytics. Więc rozwiązałem to, logując się na konto analityczne.

Rumman Siddiqui
źródło
0

Zamiast korzystać z konta usługi, możesz ominąć potrzebę dodawania nowych uprawnień użytkownika (zgodnie z najlepszymi odpowiedziami w tym wątku), używając OAuth client ID poświadczeń.

Przejdź do pulpitu nawigacyjnego danych logowania API i kliknij „Utwórz dane logowania” -> „Identyfikator klienta OAuth”. Następnie powinieneś otrzymać identyfikator klienta i sekret klienta, które będą potrzebne do uwierzytelnienia API.

Teraz możesz używać OAuth2WebServerFlowdo uwierzytelniania na podstawie użycia. Oto przykład pythona3:

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
źródło