Мы настроили аналитический проект в Google Analytics и создали учетные данные для учетной записи службы, теперь мы можем получить запись, используя файл .json.
KEY_FILE_LOCATION = 'config.json'
VIEW_ID = 'XXXXXX'
def initialize_analyticsreporting():
credentials = ServiceAccountCredentials.from_json_keyfile_name(
KEY_FILE_LOCATION, SCOPES)
analytics = build('analyticsreporting', 'v4', credentials=credentials)
return analytics
Но мы хотели получить запись, вызвав POST API
https://analyticsreporting.googleapis.com/v4/reports:batchGet с использованием токена JWT в заголовке авторизации.
Токен, который мы создаем, действителен, но мы получаем ошибку «НЕАУТИЦИРОВАНО».
def build_jwt(private_key, client_email, client_id, private_key_id):
try:
iat = time.time()
exp = iat + 3600
payload = {'iss': client_email,
'sub': client_email,
'aud': 'https://analyticsreporting.googleapis.com/v4/reports:batchGet',
'iat': iat,
'exp': exp}
additional_headers = {'kid': private_key_id}
signed_jwt = jwt.encode(payload, private_key, algorithm='RS256',headers=additional_headers)
return signed_jwt
except Exception as e:
print(e)
headers = {"Content-Type": "application/json", "authorization": "Bearer " + signed_jwt.decode("utf-8")}
response = requests.post(URL, json=data, headers=headers)
Это ошибка ниже, которую мы получаем,
{'error': {'code': 401, 'message': 'Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.', 'status': 'UNAUTHENTICATED'}}
Что-то не так с полезной нагрузкой, которую мы используем? или есть ссылка для этой ошибки?