当前位置: 首页 > 知识库问答 >
问题:

阅读时的授权问题

长孙嘉
2023-03-14

我想从我的android应用程序中读取来自Google Sheets的表格。我想通过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个答案

南门鸿雪
2023-03-14

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

有两种方法可以识别应用程序:使用OAuth 2.0令牌(它也授权请求)和/或使用应用程序的API密钥。以下是如何确定要使用哪些选项:

  • 如果请求需要授权(例如请求个人的私有数据),那么应用程序必须为请求提供OAuth 2.0令牌。应用程序也可以提供API密钥,但不一定要提供
  • 如果请求不需要授权(例如对公共数据的请求),那么应用程序必须提供API密钥或OAuth 2.0令牌,或者两者都提供,无论哪种选项对您最方便

您还可以参考快速启动项目,以了解如何正确实现这一点。

 类似资料:
  • AuthorizationServer: 该问题可能是由于WebSecurity类的某些配置不正确造成的。但是,我尝试了多种配置,但都没有运气。

  • 我试图用Github Api做一个授权请求,传递用户名和密码。但它不起作用,我得到了401状态代码。 文件里有一部分说 这是我的密码:

  • 我通过在我的租户上创建azure应用程序来使用PowerBI报告我的项目。报告在我的本地环境中流畅地呈现,但当我将应用程序发布到azure时,PowerBI报告将不会显示,并给出了这个错误。 {“error”:“invalid_grant”,“error_description”:“AADSTS65001:用户或管理员尚未同意使用ID为'55A3B089-C45C-4496-B2DB-63C98F

  • 我有一些Java代码来读取Excel数据。在运行Java代码时,它显示了以下错误。帮我解决同样的问题。另外,我需要知道其他读取。xlsx文件的方法。 (小编辑)如何打印具有各自列的行。例如:

  • 问题内容: 我正在为iOS 8开发一个Swift代码。我正在尝试做一些涉及位置的事情,因此我在swift视图控制器文件中实现了以下内容: 但是,我似乎无法使此代码正常工作。它不会保存我对位置使用的偏好。它甚至不提示我允许访问位置。我尝试更新我的info.plist。但这不起作用。顺便说一句,如果我始终在模拟器的隐私设置中选择,那么如果我立即切换回该应用程序,它将起作用。有人可以帮忙吗?我确定那是问

  • 在spotify api的授权步骤中,我完全迷失了方向 我需要提出一个类似于邮递员的请求: 具有包含client_id和client_secret(api 凭据)的标头 这些是根据授权流完成的(在他们的授权指南中的第四个-(隐式授权流(客户凭证流))本页最后一个:https://developer.spotify.com/documentation/general/guides/authoriza