我可以从我的应用程序成功访问 Google Drive 和电子表格功能。
所以我有一个 com.google.api.client.auth.oauth2.Credential 的授权实例。
现在我希望执行一个部署为“Web 应用程序”的 Google Apps 脚本。这也需要身份验证才能运行。如果我点击端点并通过身份验证,此脚本将在浏览器中运行。
这是一些伪代码:
String url = "https://script.google.com/a/macros/mycompany.com/s/xxxx/dev";
GenericUrl webAppEndPoint = new GenericUrl(url);
final HttpTransport httpTransport = AndroidHttp.newCompatibleTransport();
HttpRequestFactory requestFactory = httpTransport.createRequestFactory(currentCredential);
// Do POST for service
String requestBody = URLEncoder.encode("{\"name\":\"John Smith\",\"company\":\"Virginia Company\",\"pdf\":\""+getPdfBase64()+"\"}", "UTF-8");
HttpRequest postRequest =requestFactory.buildPostRequest(new GenericUrl(url), ByteArrayContent.fromString(null, requestBody));
postRequest.getHeaders().setAccept("application/json");
postRequest.setFollowRedirects(true);
postRequest.setLoggingEnabled(true);
HttpResponse postResponse = postRequest.execute();
如果我运行代码,我会收到以下错误:com.google.api.client.http.HttpResponseException: HttpResponseException 405 Method Not Allowed
更新:所以 - 最初我发布到错误的 URL(我从浏览器而不是脚本 URL 复制了重定向的 URL)
POST 现在使用上面的代码成功(包括身份验证),但在提交后它仍然不处理 GET 重定向。我现在可以使用它,但能够从服务器获得响应会很好。
我认为 com.google.api.client.http.HttpRequest 不能正确处理经过身份验证的 POST 重定向。