Следуя инструкциям, описанным в Using OAuth 2.0 for Installed Applications, я получил код авторизации для своего приложения.Google API OAuth2 - Получить токен обновления из токена авторизации
Я зарегистрировал мое заявление как OAuth 2.0 ID клиента в консоли разработчика Google: http://image.prntscr.com/image/bcda26f2ee12463e80e4fdd9401380da.png
Я использую тип «Другой», как приложение будет нужно только, чтобы получить новый access_token (используя refresh_token) и не будет использовать какое-либо согласие пользователя.
Безопасность не имеет значения, так как это будет частное приложение.
Приложение должно иметь возможность читать и писать в электронную таблицу и запускать скрипты Google Apps, связанные с электронной таблицей.
Это все возможно в рамках «https://www.googleapis.com/auth/spreadsheets», в соответствии с Google's OAuth 2.0 Playground:
http://image.prntscr.com/image/a506d2095be1472aa1807a52b01ab1f1.png
Я был в состоянии получить мои руки на код авторизации, используя следующий запрос (после this шага) :
https://accounts.google.com/o/oauth2/v2/auth?
scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets&
redirect_uri=urn:ietf:wg:oauth:2.0:oob&
response_type=code&
client_id=#####.apps.googleusercontent.com
наклеивая этот URL в браузере, он перенаправляется меня на эту страницу:
http://image.prntscr.com/image/64ccfc9a63be4cb985163c0e3ba0c8ef.png
Таким образом, я получили код авторизации, что, теоретически, может быть обменен на refresh_token и access_token.
Я попытался имитируя запросы, которые OAuth от Google 2,0 площадка делает при обмене кода авторизации для refresh_token и access_token:
http://image.prntscr.com/image/54e7e7da18f044c3a86e2a05b51ba830.png
Он посылает запрос POST по следующему URL-адресу:
https://www.googleapis.com/oauth2/v3/token?
code={auth_code}&
redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&
client_id=#####.apps.googleusercontent.com&
client_secret=#####&
scope=&
grant_type=authorization_code
Когда я пытаюсь выполнить этот запрос, я получаю сообщение ERROR 400 со следующим ответом:
{"error": "invalid_request", "error_description": "Invalid parameter value for redirect_uri: Missing scheme: {redirect_uri}}
Он выдает сообщение об ошибке «Отсутствует схема» для redirect_uri. Это не странно, на мой взгляд, поскольку мой Тип приложения - «Другой», а вы не можете разрешить URI перенаправления с этим типом.
Я попытался OAuth2ForDevices (который точно что я хочу), но я не могу использовать это для таблиц Google.
Каков правильный способ получить refresh_token (и access_token) с использованием кода авторизации, полученного с помощью идентификатора клиента «Другое» (который можно использовать для электронных таблиц Google)?