Аналитика Google API Ошибка 403: «У пользователя нет учетной записи Google Analytics»


146

Я создаю сценарий, основанный на пошаговом руководстве Google Analytics на этой странице:

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

Авторизация выполняется без проблем, пока не будет предпринята попытка доступа к данным. Код возврата - 403, и сообщение об ошибке:

У пользователя нет аккаунта Google Analytics

Это сообщение не имеет смысла: моя учетная запись содержит данные Google Analytics, отслеживающие несколько веб-сайтов, и я могу без проблем получать к ним доступ из веб-браузера. Я разрешил Google Analytics API через консоль API Google, и доступ к API дает мне нужные данные.

Ответы:


302

У меня тоже была эта пробема. Я исправил это, добавив адрес электронной почты моей учетной записи службы в профиль Google Analytics, к которому я хотел получить доступ.

Я получил адрес электронной почты (что-то вроде xxxxxx@developer.gserviceaccount.com) для учетной записи службы, просмотрев вкладку «Доступ к API» в консоли API Google.

Затем я следовал инструкциям Google по добавлению адреса электронной почты в профиль Google Analytics . Теперь все работает как положено.

Удачи!


8
Это лучший ответ, я попробовал, и это работает как шарм! Большое спасибо @Sebastian!
Монготоп

1
Если у вас есть несколько профилей в вашей учетной записи и вы хотите получить доступ к их данным с помощью GA API, если вы продолжите добавлять xxxxx@developer.gserviceaccount.com в профиль Google Analytics, или существует более эффективный способ без использования ручного способа. Спасибо!
Монготоп

2
@ mongotop, пожалуйста! К сожалению, я не знаю более эффективного способа сделать это - дайте нам знать в комментариях, если вы найдете такой.
SM

1
Если вы добавляете пользователя на уровне свойств, обязательно добавьте его в правильном представлении, поскольку пользовательский интерфейс Analytics иногда вводит в заблуждение
tacone

1
Ты легенда, я провел весь день, пытаясь это настроить.
dspacejs

80

Просто добавьте вам указанный адрес электронной почты (формат 71667655853644-o653rrdkq5hthsgo0otbpojoo@developer.gserviceaccount.com)

Менеджерам пользователей:

У пользователя нет аккаунта Google Analytics

Жаль, что это поможет вам


2
К сожалению, ошибка не исчезла. Неподвижное сообщение: GAPI: не удалось запросить данные учетной записи. Ошибка: "{" ошибка ": {" ошибки ": [{" домен ":" глобальный "," причина ":" достаточные права доступа "," сообщение ":" У пользователя нет учетной записи Google Analytics. "}]," код ": 403," message ":" У пользователя нет учетной записи Google Analytics. "}}"
JosFabre

1
@ Лев более 3 лет этот ответ остается в силе. Я только надеялся, что Google улучшил это, но нет. Это было сделано отлично: D
itsnikolay

28

Я столкнулся с той же проблемой. Это было решено путем добавления адреса электронной почты пользователя учетной записи службы (your account@yourwebsite-dev.iam.gserviceaccount.com ) к пользователям в вашей учетной записи Google Analytics.

Домашняя страница Analytics -> Администратор (левая панель) -> Управление пользователями -> Добавить (нажмите значок плюса в правой части меню) -> Добавить нового пользователя -> Добавить идентификатор электронной почты при вводе адресов электронной почты.

введите описание изображения здесь

Теперь это решит проблему.


1
Почему этот ответ не принят? Я провожу 2 дня, пытаясь выяснить, почему следование руководству приводит меня к этой ошибке.
Рагнар

8

Это упомянуто в комментарии выше, но если вы добавите адрес электронной почты в разделе «Управление пользователями» для своей учетной записи , он не будет работать. Вы должны нажать на Управление пользователями под частью просмотра экрана.

введите описание изображения здесь


Я знаю, что прошло много лет, но теперь я добавил адрес в аккаунт , и, похоже, он работает хорошо.
Питер

Я не вижу User Managementссылки в разделе Просмотр на моем конце
aldrien.h

4

Вы также получите эту ошибку, если вы никогда не входили в систему с учетной записью Google, с которой вы пытаетесь пройти аутентификацию.


6
Я просто оставлю это здесь: ссылка на веб-интерфейс Google Analytics
naXa

А где пароль для электронной почты? Я пробовал пароль, который мне показывает Google перед загрузкой сертификата .p12, но он недействителен
ymakux

2

Я получал ошибку 403, пока не изменил разрешения учетной записи электронной почты из Google Analytics с «Чтение и анализ» на что-то другое, сохранил ее, а затем изменил разрешения обратно на «Чтение и анализ», и это сработало.


Это помогло. Я создал новую «учетную запись службы» в разделе «API & Auth / Credentials»; и сохранил пару ключей .p12. Затем я зашел в консоль управления пользователями Analytics и добавил адрес электронной почты пользователя службы. .p12 авторизация с использованием PHP API работает, но только если я отмечаю «Read & Analyze» только в списке разрешений.
Джонни О

2

На случай, если это не сработает, попробуйте открыть файл JSON, который вы скачали, и найдите client_email и скопируйте этот адрес электронной почты и добавьте его в файл просмотра.

Нажмите на

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.

Если это все еще не работает

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

1

Я попал в ошибку 403. Эти шаги заставили меня обойти это. Чтобы было ясно, я пытался заставить образец Google "HelloAnalytics.php" работать с OAuth (без взаимодействия с пользователем, подходящий для работы cron и т. Д.).

После включения API Google Analytics я создал новую «учетную запись службы» в разделе «API & Auth / Credentials»; и сохранил пару ключей .p12. Затем я зашел в консоль управления пользователями Analytics и добавил адрес электронной почты этого пользователя службы.

.p12 авторизация с использованием PHP API работает, если я отмечаю только «Чтение и анализ» только в списке разрешений. Если я добавлю «Управление пользователями» и / или «Редактировать», я получу 403. Надеюсь, это полезно, я пытался разобраться с этим пару часов ...


0

У меня тоже была эта проблема, и я обнаружил, что проблема в том, что я просил слишком много разрешений. Консоль разработчика говорит, чтобы запросить оба http://www.googleapis.com/auth/analytics и http://www.googleapis.com/auth/analytics.readonly разрешения. Это не сработало, когда я также использовал subпретензию. subТребование инструктирует Google выпустить маркер доступа , который работает от имени другого пользователя - в моем случае учетной записи Google , которая является владельцем учетной записи службы. Я удалил analyticsразрешение и придерживался analytics.readonlyподпункта:

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

Выданный токен на предъявителя позволяет мне выполнять (по крайней мере некоторые) запросы Google Analytics к профилям, которые принадлежат совершенно другим учетным записям Google, но которые были предоставлены (только для чтения) моему пользователю gmail (me.example@gmail.com) ,


1
Что такое sub, когда я использую SDK клиента Google Analytics?
Dejell

Я бы хотел, чтобы это сработало! Я получаю следующую ошибку, когда пытаюсь сделать то же самое: Google_Auth_Exception [401]: ошибка обновления токена OAuth2, сообщение: '{"error": "unauthorized_client", "error_description": "Неавторизованный клиент или область в запросе". } '
SEOF

Я предлагаю вам придерживаться этого. Мы по-прежнему используем это, чтобы получать данные в реальном времени от GA каждые несколько минут, все с использованием bash, не меньше!
mogsie

0

Мне удалось это исправить, убедившись, что

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

Переменная имени приложения 'X выше была именем ACCOUNT на панели инструментов GA, а не именем PROPERTY, которое в моем случае было фактическим URL сайта, к которому я хочу получить доступ.

Смущает, но, к счастью, исправлено (без благодарности Google!)


Я пытаюсь найти это «Х». Можете ли вы опубликовать снимок экрана?
Dejell

0

Проблема возникает, поскольку мы не предоставляем аргумент «sub». Если мы не предоставим это, звонок будет осуществляться от имени этой длинной учетной записи службы электронной почты.

Так что просто предоставьте дополнительный аргумент, с адресом электронной почты, к которому вы уже предоставили доступ в отчете, и все должно работать хорошо!


0

Я получил ту же ошибку, так как я не входил в Google Analytics. Поэтому я решил эту проблему, войдя в аккаунт Google Analytics.


0

Это сообщение, которое мы получаем, когда client_emailв Google Alalytics не предоставлено разрешение , client_emailполученное из файла JSON . чтобы разрешить client_emailиспользование вашего приложения, перейдите на сайт Google Analytics и нажмите «Администратор (значок настройки)»

введите описание изображения здесь

Вы получите список меню справа, там нажмите «Просмотр управления пользователями»

введите описание изображения здесь

Там вы увидите значок «+» и «добавить пользователя»,

введите описание изображения здесь

как только вы нажмете на это, вам нужно добавить client_emailв «поле адреса электронной почты» и сохранить его, вы должны быть в порядке!

введите описание изображения здесь


-1

Пользователь, для которого вы пытаетесь использовать API, не активировал свой сервис GA.
Просто иметь учетную запись Google недостаточно .

... Однако наличие учетной записи Google автоматически не предоставляет вам доступ к Google Analytics. Во-первых, вы должны зарегистрироваться для Google Analytics, единовременный, простой процесс ...


-1

Вместо использования служебной учетной записи вы можете обойти необходимость добавления добавления новых пользовательских разрешений (в соответствии с основными ответами в этой теме), используя OAuth client ID учетные данные.

Перейти к панели управления учетными данными API и нажмите «Создать учетные данные» -> «Идентификатор клиента OAuth». После этого вы должны получить идентификатор клиента и секрет клиента, которые вам понадобятся для аутентификации API.

Теперь вы можете использовать OAuth2WebServerFlowдля аутентификации на основе использования. Вот пример на 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()
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.