Аутентификация StackExchange API в скрипте Google Apps

Я пытаюсь использовать StackExchange API версии 2.2 в скрипте Google Apps.

Проблема возникает на последнем этапе явного потока OAuth 2.0, когда я пытаюсь отправить запрос POST для получения токена доступа. Я получаю ошибку 404, но делаю тот же запрос вручную (с использованием расширения почтальона), все в порядке.

Чтобы упростить проблему, если я отправлю этот запрос POST без полезной нагрузки, я получу тот же 404

var response = UrlFetchApp.fetch("https://stackexchange.com/oauth/access_token", {
  method: 'post',
  muteHttpExceptions: true
});
Logger.log(response);

в то время как в почтальоне я получаю это 400:

{
   "error": {
       "type": "invalid_request",
       "message": "client_id not provided"
   }
}

Я предполагаю, что это будет проблема с UrlFetchApp, но кто-нибудь знает, как ее решить? Спасибо!


person Gerry    schedule 03.12.2014    source источник


Ответы (2)


Проблема связана с заголовком Origin.

Удалить напрямую из заголовка нельзя, но можно позвонить через прокси :)

person Pispo    schedule 05.01.2015

Вам необходимо предоставить данные для публикации, добавив к вызову объект «option». Например:

var options = { "method" : "post", "payload" : payload };
UrlFetchApp.fetch("https://stackexchange.com/oauth/access_token", options);

Кстати, пробовали ли вы использовать OAuth, который получил UrlFetch: https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#addOAuthService(String). Это может быть лучше.

person Ido Green    schedule 03.12.2014
comment
Спасибо, но я получаю ту же ошибку. Я не использую OAuthConfig, потому что он не работает с API, использующими OAuth2. Я использую адаптацию этой библиотеки, но на этом этапе она не работает. - person Gerry; 03.12.2014