【问题标题】:Run a Google Apps Script from Android App?从 Android 应用程序运行 Google Apps 脚本?
【发布时间】:2014-02-10 11:52:25
【问题描述】:

我需要在我创建的 Google Apps Script Web App 上运行 GET 调用。我想在我的 Android 应用 (IntentService) 中按下按钮后执行此 GET 调用。

但是,我不确定如何执行授权流程,因为 Google Apps 脚本旨在在用户自己的 Gmail 帐户上运行(它以“用户访问网络应用程序”的身份执行清理脚本)。

有没有办法让我进行身份验证,以便我可以从我的 Android 应用程序触发依赖于用户的 Google Apps 脚本?

【问题讨论】:

    标签: android authentication google-apps-script oauth-2.0


    【解决方案1】:

    好的。以下代码适用于我。

    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() 对于执行实际请求很重要。 sessionManager.getCreadentials() 是我的一个单例应用程序类,它返回 GoogleAccountCredential 对象,这是 oAuth2 身份验证过程所必需的。

    最后这段代码将进入 Google Scripts 中的 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);
       }
    }
    

    【讨论】:

    • 我知道这是旧的,我不期待(或感觉有权)任何回应,但是这样的东西可以用来在另一个脚本的其他地方创建一个独立脚本的触发器吗?我在这里问过这个问题:stackoverflow.com/questions/67763540/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多