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.

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 xxxxxx@developer.gserviceaccount.com) 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!


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 xxxxx@developer.gserviceaccount.com 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


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 account@yourwebsite-dev.iam.gserviceaccount.com) 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.


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


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ć.


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.


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.

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


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 ...


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 ...


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":"me.example@gmail.com"
  "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 (me.example@gmail.com) .


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!)


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!


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.


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()
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.