Я создал функцию Google Cloud и хотел бы получить к ней доступ из приложения Python, которое я разрабатываю. Я могу получить доступ к функции, когда аутентификация не требуется, но не могу получить доступ к функциям, когда включаю аутентификацию.
Вот ключ учетной записи службы, который я использую, с удаленной информацией. Единственная роль, для которой он настроен, - это вызов облачных функций.
{
"type": "service_account",
"project_id": "XYZ",
"private_key_id": "XYZ",
"private_key": "XYZ",
"client_email": "XYZ",
"client_id": "XYZ",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "XYZ"
}
Кажется, что для аутентифицированных запросов требуется токен, включенный в заголовок request Authorization
, но я не понимаю, где получить этот токен .
Я пробовал использовать подход, описанный здесь с переменными среды и методом аутентификации по умолчанию, но это не работает. Я предполагаю, что это связано с тем, что ключ учетной записи службы отличается от токена OAuth. (Я создал новую учетную запись службы с разрешением вызывающего облачных функций и использую этот ключ учетной записи службы). Я получаю следующую ошибку:
google.auth.exceptions.RefreshError: ('invalid_scope: Invalid OAuth scope or ID token audience provided.', '{"error":"invalid_scope","error_description":"Invalid OAuth scope or ID token audience provided."}')
Как мне сгенерировать этот токен для аутентификации запроса из моего Python скрипта? Или рекомендуется подход со служебной учетной записью, но что-то еще идет не так?