google-app-engine – 从Google Apps脚本调用Google Cloud Endpoint API时出错404

我试图通过Google Apps脚本调用Google Cloud Endpoint API(在App Engine上开发).端点已启动并运行,老实说,我不知道应该使用哪个URL,但通过Google Chrome Web Tools看起来URL类似于:

https://myapp.appspot.com/_ah/api/myendpointapi/v1/myEndPointMethod/

除了直接包含在URL中的API参数外,还有斜杠分隔:

https://myapp.appspot.com/_ah/api/myendpointapi/v1/myEndPointMethod/param1value/param2value/

现在,为了从Google App Script调用该API,我使用以下代码片段:

function myFunction() {
  var params =
  {
    "param1" : "param1value",
    "param2" : "param2value",
  };
  var result = UrlFetchApp.fetch('https://myapp.appspot.com/_ah/api/myendpointapi/v1/myEndPointMethod/', params);
  DocumentApp.getUi().alert(result);
}

但是我总是得到404错误.如果我必须诚实,我甚至不知道UrlFetchApp是否是调用API的正确方法.我在StackOverflow注意到这个帖子,但没有人回答.什么是正确的URL使用?非常感谢.

编辑:现在我正在尝试使用不需要任何参数的API方法.我发现了一种调用特定URL的方法(使用method =’get’,如下面的答案所示),但现在我收到401错误,因为它说我没有登录.我相信我需要使用某种OAuth参数现在.任何的想法?我尝试使用OAuthConfig,但也没有运气:(从App Engine日志我可以看到以下错误:

com.google.api.server.spi.auth.GoogleIdTokenUtils verifyToken: verifyToken: null
com.google.api.server.spi.auth.AppEngineAuthUtils getIdTokenEmail:
getCurrentUser: idToken=null

function myFunction() {
 var result = UrlFetchApp.fetch('myurl', googleOAuth_());
 result = result.getContentText();
}

function googleOAuth_() {
 var SCOPE = 'https://www.googleapis.com/auth/drive';
 var NAME = 'myAPIName';
 var oAuthConfig = UrlFetchApp.addOAuthService(NAME);
 oAuthConfig.setRequestTokenUrl('https://www.google.com/accounts/OAuthGetRequestToken?scope='+SCOPE);
 oAuthConfig.setAuthorizationUrl('https://www.google.com/accounts/OAuthAuthorizeToken');
 oAuthConfig.setAccessTokenUrl('https://www.google.com/accounts/OAuthGetAccessToken');
 oAuthConfig.setConsumerKey('anonymous');
 oAuthConfig.setConsumerSecret('anonymous');
 return {oAuthServiceName:NAME, oAuthUseToken:'always'};
}

最佳答案 UrlFetchApp是目前调用Google Cloud Endpoints API的唯一方式.
UrlFetchApp.fetch的第二个参数是高级选项的特殊键值映射.要传递POST参数,您需要执行以下操作:

UrlFetchApp.fetch(url, {
  method: 'post',
  payload: {
    "param1" : "param1value",
    "param2" : "param2value",
  }
});
点赞