阅读表格时的授权问题

时间:2018-11-19 09:49:20

标签: java android google-drive-android-api

我想从Android应用程序中的Google表格中读取表格。 我想通过Google Sheets API做到这一点。 我将工作表声明为公共的,创建了API密钥,并尝试发送GET服务调用:

https://sheets.googleapis.com/v4/spreadsheets/{My Sheet key}/values/responses:append?key={My API credential key}

我得到401代码。 响应:

  

请求缺少必需的身份验证凭据。预期的OAuth   2个访问令牌,登录cookie或其他有效的身份验证凭据。   看到   https://developers.google.com/identity/sign-in/web/devconsole-project

我的代码:

private static final String SHEET_URL = "https://sheets.googleapis.com/v4/spreadsheets/1d534sQ5xaNbr65wMM_qH2yjXo3EPrrp3o34z-Foledg/values/responses:append?key=AIzaSyDT88Nq6jhtaKH-vIVEuvGO1d9Sx8ewR0w";

public String GetConanimList() throws Exception {
    URL url = new URL(SHEET_URL);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setDoOutput(true);
    conn.setRequestMethod("GET");
    conn.setRequestProperty("Content-Type", "application/json");

    OutputStream os = conn.getOutputStream();
    String jsonPayload = null;
    //os.write(jsonPayload.getBytes());
    os.flush();
    os.close();

    int statusCode = conn.getResponseCode();
    System.out.println("Response from WA Gateway: \n");
    System.out.println("Status Code: " + statusCode);
    BufferedReader br = new BufferedReader(new InputStreamReader(
            (statusCode == 200) ? conn.getInputStream() : conn.getErrorStream()
    ));
    String output;
    String response = "";
    while ((output = br.readLine()) != null) {
        response = response + output;
    }
    conn.disconnect();
    return response;
}

我想念什么?谢谢。

1 个答案:

答案 0 :(得分:0)

要使用Google Sheets API,您需要authorize的请求。

  

有两种方法可以识别您的应用程序:使用OAuth 2.0 token(也可以授权请求)和/或使用   应用程序的API key。这是确定其中哪些方法的方法   使用的选项:

     
      
  • 如果请求需要授权(例如对个人私人数据的请求),则应用程序必须随请求提供OAuth 2.0令牌。该应用程序也可以提供API密钥,但不是必须的。
  •   
  • 如果该请求不需要授权(例如对公共数据的请求),则该应用程序必须提供API密钥或OAuth 2.0令牌,或同时提供这两者-无论哪种选择对您来说都是最方便的。
  •   

您也可以参考quickstart projects作为如何正确实施此方法的指南。