我需要在我创建的google apps脚本web应用程序上运行get调用。我想在我的android应用程序(intentservice)中按下一个按钮后执行这个get call。
但是,我不确定如何进行授权流,因为google app s脚本是在用户自己的gmail帐户上运行的(它执行一个清理脚本,称为“用户访问web应用”)。
有没有办法让我进行身份验证,这样我就可以从我的android应用程序触发依赖于用户的google应用程序脚本?

最佳答案

好啊。以下代码对我有效。

new AsyncTask<Void, Void, Void>() {

@Override
protected Void doInBackground(Void... params) {

    // The Google Script URL
    String googleAppsScriptURL = "https://script.google.com/macros/s/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-o/dev";
    HttpURLConnection connection = null;
    try {
        URL url = new URL(googleAppsScriptURL + "?param1=foo&param2=bar");
        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");
        connection.setRequestProperty("Authorization", "Bearer " + sessionManager.getCredentials().getToken());

        if(connection.getResponseCode() == 200) {
            // DO STUFF
        }
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (GoogleAuthException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }  finally {
        if(connection != null) {
            connection.disconnect();
        }
    }
    return null;
}
}.execute();

调用connection.getresponsecode()对于实际请求的执行非常重要。
getcreadentials()是我的一个单例应用程序类,它返回GoogleAccountCredential对象,这是OAuth2身份验证过程所必需的。
最后,这段代码将在google脚本的dopost函数中输入:
function doPost(e) {
   if(typeof e !== 'undefined') {
    Logger.log(e.parameters.param1); // foo
    Logger.log( e.parameters.param2); // bar
    callYourFunction(e.parameter.param1, e.parameter.param2);
   }
}

07-24 09:47
查看更多