0

我正在尝试在 Google Apps 脚本中执行以下请求。此请求将返回用于访问 API 的令牌。

POST https://datamarket.accesscontrol.windows.net/v2/OAuth2-13
Content-Type: application/x-www-form-urlencoded

client_id=USERS-CLIENT-ID&client_secret=USERS-SECRET-KEY&grant_type=client_credentials&scope=http%3a%2f%2fapi.microsofttranslator.com%2f

如何在 Google Apps 脚本中执行上述请求。我正在阅读它,但无法找到解决方案。我尝试了类似下面的方法,但没有奏效。我应该使用哪些方法?

var oAuthConfig = UrlFetchApp.addOAuthService("bearer");
oAuthConfig.setConsumerKey("USERS-CLIENT-ID");
//some code omitted
//I couldn't figure out where to put grant_type and scope 
var result = UrlFetchApp.fetch("http://api.microsofttranslator.com/v2/Http.svc/Translate?text=hello&from=en&to=ja",options); //gave oAuth error
4

1 回答 1

1

addOAuthService实际上仅适用于 OAuth 1 服务。

对于 OAuth 2,您需要手动执行 POST 调用。这是一个例子

var parameters = {
    method : 'post',
    payload : 'client_id='+CLIENT_ID+'&client_secret='+CLIENT_SECRET+'&grant_type=authorization_code&redirect_uri='+REDIRECT_URL+'&code=' + code
  };

  var response = UrlFetchApp.fetch(TOKEN_URL,parameters).getContentText(); 

您可以在这里看到一个更完整的示例 - https://github.com/entaq/GoogleAppsScript/blob/master/IO2013/YouTubeAnalytics/oauth2.gs#L22

于 2013-08-01T04:20:44.167 回答