GenerateAccessToken по учетным записям служб - PullRequest
0 голосов
/ 09 апреля 2019

Мне нужно сделать перерыв для доступа к учетной записи в Google Business, но у меня нет access_token.У меня просто есть учетная запись json of services.Моя проблема в следующем, как я могу сгенерировать токен доступа, начиная с учетной записи службы?

Звонок:

https://mybusiness.googleapis.com/v4/accounts/{accountName}/locations/{locationName}/reviews

Я пытаюсь сгенерировать токен доступа с помощью вызова rest:

https://iamcredentials.googleapis.com/v1/{name=projects/*/serviceAccounts/*}:generateAccessToken

Но это возвращает ошибку:

В запросе отсутствуют необходимые учетные данные аутентификации.Ожидаемый токен доступа OAuth 2, cookie для входа в систему или другие действительные учетные данные для аутентификации.

Я понимаю ошибку, но она не логична.Он должен вернуть краткосрочный токен без учетных данных для проверки подлинности, поскольку у меня уже есть связанная учетная запись службы.

С уважением

1 Ответ

0 голосов
/ 15 апреля 2019

Вы неправильно понимаете, что делает API generateAccessToken и как его назвать.

Для вызова этого API вам уже нужен токен доступа, сгенерированный из учетных данных учетной записи пользователя или службы. Вы можете использовать gcloud для создания токена доступа: gcloud auth application-default print-access-token. Затем включите токен доступа в HTTP-заголовок Authorization: bearer.

Вам также необходимо разрешение iam.serviceAccounts.getAccessToken IAM для учетной записи службы, которую вы указываете в вызове API. Это разрешение может быть предоставлено с помощью gcloud iam service-accounts add-iam-policy-binding с опцией --role=roles/iam.serviceAccountTokenCreator предоставление разрешения.

После выполнения вышеуказанных требований вы вызываете этот API для создания нового токена доступа с использованием указанной учетной записи службы. В основном вы используете один токен доступа для создания другого токена доступа, меняющего личность.

...