Я пытаюсь получить токен доступа Google OAuth 2.0 для сервисного аккаунта, но вместо этого получаю invalid_grant
ошибку. Я проверил свои различные артефакты (закрытый ключ и т. д.) и синхронизацию часов, но пока не смог решить эту проблему.
Есть один, возможно, связанный элемент, который кажется странным: в документации Google говорится
В HTTP-запросе POST требуются три параметра, они показаны ниже.
Далее следует таблица с двумя строками, в которых указаны два параметра (grant_type
и assertion
). Может быть, нужен и третий (я видел примеры, в которых тоже каким-то образом используется assertion_type
)? Может ли быть так, что (некоторые) инженеры Google (или, возможно, ваш покорный слуга) не умеют считать до трех? :)
Подводя итог: каковы подходящие параметры? Это кажется неясным из текущей документации Google.
ОБНОВЛЕНИЕ: Вот дополнительная информация: я не могу использовать клиентскую библиотеку Google API, поскольку для моего приложения требуется язык, отличный от тех, которые в настоящее время не поддерживаются Google. Поэтому я должен реализовать логику для создания и подписания JWT и т. д., что обычно не рекомендуется. Я подтвердил, что артефакты моей учетной записи службы в порядке: я могу использовать их с клиентской библиотекой API Google для Java для доступа к тому же календарю (т.е. не с моей целевой платформы). В частности, мой «client_id» имеет вид «[email protected]», а мой ключ — это 128-битный закрытый ключ RSA, оба полученные из Панель инструментов Google API.