Перед вызовом служб Google из Postman вам необходимо заново создать поток для получения учетных данных учетной записи службы формы токена доступа:
- построить и закодировать полезную нагрузку JWT из данных из файлов учетных данных (для заполнения aud, iss, sub, iat и exp)
- запросить токен доступа с помощью этого JWT
- сделать запрос к API, используя этот токен доступа
Вы можете найти полное руководство для этого потока здесь: https://developers.google.com/identity/protocols/oauth2/service-account#authorizingrequests
Вот пример в python. Вам нужно будет установить pycrypto и pyjwt для запуска этого скрипта:
import requests
import json
import jwt
import time
#for RS256 you may need this
#from jwt.contrib.algorithms.pycrypto import RSAAlgorithm
#jwt.register_algorithm('RS256', RSAAlgorithm(RSAAlgorithm.SHA256))
token_url = "https://oauth2.googleapis.com/token"
credentials_file_path = "./google.json"
#build and sign JWT
def build_jwt(config):
iat = int(time.time())
exp = iat + 3600
payload = {
'iss': config["client_email"],
'sub': config["client_email"],
'aud': token_url,
'iat': iat,
'exp': exp,
'scope': 'https://www.googleapis.com/auth/spreadsheets'
}
jwt_headers = {
'kid': config["private_key_id"],
"alg": 'RS256',
"typ": 'JWT'
}
signed_jwt = jwt.encode(
payload,
config["private_key"],
headers = jwt_headers,
algorithm = 'RS256'
)
return signed_jwt
with open(credentials_file_path) as conf_file:
config = json.load(conf_file)
# 1) build and sign JWT
signed_jwt = build_jwt(config)
# 2) get access token
r = requests.post(token_url, data= {
"grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
"assertion": signed_jwt.decode("utf-8")
})
token = r.json()
print(f'token will expire in {token["expires_in"]} seconds')
at = token["access_token"]
print(at)
Обратите внимание на значение области: https://www.googleapis.com/auth/spreadsheets
Вероятно, вы можете выполнить все описанные выше действия с помощью Google API. библиотека в зависимости от того, какой язык программирования вы предпочитаете
Приведенный выше сценарий напечатает токен доступа:
ya29.AHES67zeEn-RDg9CA5gGKMLKuG4uVB7W4O4WjNr-NBfY6Dtad4vbIZ
Затем вы можете использовать его в Postman в заголовке Authorization
как Bearer {TOKEN}
.
Или используя curl :
curl "https://sheets.googleapis.com/v4/spreadsheets/$SPREADSHEET_ID" \
-H "Authorization: Bearer $ACCESS_TOKEN"
Примечание: вы можете найти пример использования ключей сервисного аккаунта для вызова Google Translate API здесь