2013-10-21 30 views
0

我可以從我的應用程序成功訪問Google雲端硬盤和電子表格功能。如何從Android訪問內置Google Apps腳本的「Web App」?

所以我有一個授權的com.google.api.client.auth.oauth2.Credential實例。

現在我希望執行部署爲'Web App'的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不允許的方法

更新:所以 - 最初我是發佈到錯誤的URL(我從瀏覽器中複製了重定向的URL而不是腳本URL)

使用上述代碼,POST現在已成功(包含身份驗證),但它仍然沒有'處理GET重定向ct提交後。我現在可以使用它,但是能夠從服務器獲得響應是很好的。

我認爲com.google.api.client.http.HttpRequest不能正確處理經過驗證的POST重定向。

+0

所以這似乎揭示了一些問題 - https://code.google.com/p/google-apps-script-issues/issues/detail?id = 2707 - POST重定向併成爲GET – dompardoe

回答

0

你的僞代碼不是很明亮;要真正看到發生了什麼,你需要顯示實際的HTTP流量。我應該說,302重定向到指定的redict_uri是OAuth 2身份驗證流程的正常部分。

+0

蒂姆,例如現在肯定有效,但重定向仍然沒有處理。作爲GET,重定向工作正常,腳本可以返回結果。 – dompardoe

0

1)你無法通過驗證調用應用程序腳本。您需要將其作爲匿名訪問發佈爲contentService。 2)你也打電話錯誤的網址。調用服務url不是您在瀏覽器中獲得的重定向服務url。

+0

Zig,你對服務URL(doh!updated)是正確的 - 但是驗證起作用,它似乎並沒有處理提交後的重定向。 – dompardoe

+1

你的網址仍然是錯誤的,你正在使用調試網址,而不是真正的網址。另外,看看發佈爲匿名訪問是否可以解決任何問題。 –

+0

Zig,就在我現在正在開發腳本時使用它 - 似乎對結果沒有任何影響 - 它總是希望在提交後重定向。 POST全部提交正常,但重定向沒有被HttpRequest正確處理。 TBH - 現在提交我可以解決這個問題。 – dompardoe

相關問題