Как получить токен доступа из Google Analytics с помощью учетной записи службы?

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

Мне нужно обойти ручную авторизацию в браузере, поэтому я использовал учетную запись службы, для которой у меня есть все данные, private_key, client_id и т. Д.

https://www.googleapis.com/oauth2/v4/token&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion= {PRIVATEKEY}

Если я сделаю это выше, я получу «Не найдено».

Кто-нибудь может помочь?

Ваше здоровье


person user1092872    schedule 22.01.2016    source источник
comment
Получить доступ с помощью учетной записи службы вручную непросто, вот некоторая документация. developers.google.com/identity/protocols/OAuth2ServiceAccount Я бы порекомендовал вам воспользоваться Google клиентскую библиотеку и разобрать ее код.   -  person DaImTo    schedule 22.01.2016


Ответы (1)


В демонстрации авторизации на стороне сервера Embed API есть пример делать это. В примере используется клиентская библиотека API Google для Python, но, как @DalmTo упоминает в своем комментарии, вы можете посмотреть, что он делает внутри, для репликации запросов.

Вот как выглядит код, получающий токен доступа:

import json
from oauth2client.client import SignedJwtAssertionCredentials

# The scope for the OAuth2 request.
SCOPE = 'https://www.googleapis.com/auth/analytics.readonly'

# The location of the key file with the key data.
KEY_FILEPATH = 'path/to/json-key.json'

# Load the key file's private data.
with open(KEY_FILEPATH) as key_file:
  _key_data = json.load(key_file)

# Construct a credentials objects from the key data and OAuth2 scope.
_credentials = SignedJwtAssertionCredentials(
    _key_data['client_email'], _key_data['private_key'], SCOPE)

# Defines a method to get an access token from the credentials object.
# The access token is automatically refreshed if it has expired.
def get_access_token():
  return _credentials.get_access_token().access_token
person Philip Walton    schedule 24.01.2016