Преобразование файла JSON OAuth2 в токен JWT для CoreReporting API v4 - PullRequest
0 голосов
/ 05 июля 2019

Мы настроили аналитический проект в 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'}}

Что-то не так с полезной нагрузкой, которую мы используем? или есть ссылка для этой ошибки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...