2016-09-14 4 views
1

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

Проблема в том, что мне нужно создавать отчеты с помощью cronjob, но для этого требуется аутентификация. Я попытался следующие подходы:

1. Используя API for web applications:

мне удалось сделать эту работу, но процесс OAuth2 заставляет меня проверять подлинность в Google, перенаправив меня на страницу входа в Google. После входа в систему создается токен и создается мой отчет. Но я не мог найти способ, чтобы автоматически аутентифицировать без вмешательства пользователя (например, заполнение формы регистрации Google)

2. Использование API for service accounts:

С помощью этого решения, я могу создавать отчеты без вручную войти в Google, что является удивительным. Но для этого метода мне необходимо добавить учетную запись службы в учетную запись Google Analytics, добавив вновь созданного пользователя [email protected] к каждому из просмотров Google Analytics, к которому я хочу получить доступ. Я не могу этого сделать, так как некоторые из просмотров, которые я пытаюсь получить, управляются клиентами моей компании, и я не могу попросить каждого из них добавить еще одного пользователя Google Analytics.

Мне нужно иметь доступ к представлениям Analytics, используя уже настроенный пользовательский адрес электронной почты. Я попытался добавить этот адрес в качестве владельца моей учетной записи службы в Service Accounts Manager, но не повезло (см. Скриншоты в дальнейшем).

Service Accounts Manager

Analytics Administration

Есть ли способ, я могу либо использовать API для веб-приложений со статическим лексемы (т.е. без необходимости вручную войти в Google), или использовать API для служебных учетных записей без чтобы добавить пользователя Google в каждый из моих просмотров в Google Analytics?

Я здесь в затруднении, поэтому любой совет поможет.

ответ

2

В связи с тем, что у вас нет контроля над всеми учетными записями, как вы сказали, вы не сможете использовать учетную запись службы.

Для этого вам необходимо использовать Oauth2. Кто-то должен будет аутентифицировать ваше приложение в первый раз. После того как доступ был предоставлен в первый раз, вам будет предоставлен токен доступа для доступа к API и токен обновления. Если вы сохраните этот токен обновления, вы сможете запросить новый токен доступа из своего задания cron, когда захотите, чтобы запустить ваши отчеты.

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

Примечание. Вы также можете разместить адрес электронной почты службы поддержки на уровне учетной записи, чтобы получить доступ ко всему. Но это не поможет вам с клиентами, к которым у вас нет доступа.

Update:

Обновить маркеры не истекают только под:

  • освежать маркер не используется в течение 6 месяцев, также истекает.
  • пользователи могут перейти в настройки приложения на учетной записи google и отменить ваш доступ в любое время.

Пользователь может повторно аутентифицировать ваше приложение (тот же идентификатор клиента) 26 раз, давая вам 26 различных токенов обновления, после номера 26 первый токен обновления истекает. У вас может быть только 26 активных токенов обновления для одного пользователя. Убедитесь, что вы всегда сохраняете новый токен обновления.

+0

Я посмотрю, спасибо. У меня есть один вопрос, хотя это токен обновления, специфичный для каждого свойства Analytics (т. Е. Если я хочу получить статистику для 20 разных сайтов, мне нужно будет создать 20 токенов обновления), даже если все эти свойства управляются в одной аналитике (по «учетной записи», я имею в виду адрес электронной почты и пароль, которые я использую для авторизации API с помощью OAuth2)? – roberto06

+0

Обновить токен дает доступ ко всем учетным записям Google Analytics, к которым у аутентифицированного пользователя есть доступ к – DaImTo

+1

Удивительный! Я попробую это в ближайшие несколько дней и дам вам знать, как все прошло! – roberto06

0

Насколько я знаю, предполагаемый метод для заданий cron - использовать API для учетных записей служб, как вы описали. Тем не менее, кажется, что это ожидаемое и соответствующее поведение, что вы не можете получить доступ к случайному виду, просто предоставив свой идентификатор своей учетной записи службы без предварительного разрешения владельца представления. Без этих настроек Analytics не будет знать о ваших отношениях с вашим клиентом и, следовательно, откажется от доступа к данным.

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

+0

Такая же проблема, у меня более 200 учетных записей Google Analytics, и я не могу добавить пользователя для каждого из них (главным образом потому, что у меня есть только разрешения на чтение для некоторых из них). – roberto06