9

我正在尝试使用带有 Java 的 Google Sheet API 将值写入单元格。为了阅读,我使用了Java Quickstart中的指南,对我来说效果很好。

为了写谷歌表格,我使用:

service.spreadsheets().values().update(spreadsheetId, "Sheet1!A4:H", response).execute();

此函数在运行时输出以下错误:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
  "code" : 403,
  "errors" : [ {
    "domain" : "global",
    "message" : "Request had insufficient authentication scopes.",
    "reason" : "forbidden"
  } ],
  "message" : "Request had insufficient authentication scopes.",
  "status" : "PERMISSION_DENIED"
}

作为我正在使用的身份验证范围

private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS);
4

4 回答 4

13

显然有几个问题在一起:

  1. 删除存储在 /Users/XXX/.credentials 中的凭据。
  2. 将范围更改为 SheetsScopes.SPREADSHEETS。
  3. 工作表本身的 Google 工作表共享和编辑选项。

现在它起作用了!谢谢你们的帮助

于 2016-06-08T12:23:18.093 回答
3

我遇到了同样的问题。我解决了范围内的问题。我刚变

SheetsScopes.SPREADSHEETS.READONLY

 SheetsScopes.SPREADSHEETS

而且效果很好。

于 2016-08-26T01:42:10.353 回答
0

Java API 必须以交互方式使用,如果您在无法弹出 Web 浏览器(这将允许您批准 OAuth 对话框)的服务器上运行它,则身份验证流程不正确凭据,将无法正常工作。

运行此程序时,您是否看到弹出一个浏览器来批准 OAuth 对话框?如果没有,您很可能在无头会话中运行,并且需要一些其他方法来获取用户的凭据。

于 2016-06-07T18:50:54.823 回答
-1

尝试用 A4:H 替换“Sheet1!A4:H”

于 2016-08-26T07:54:56.123 回答