9

这是我关于使用 Google Calendar API 和 OAuth2 时出现 401 错误的线程的后续内容,可在此处找到

这包含导致我下一个问题的帐户设置的详细信息,因此我不会在此线程中重复自己。

好的,所以当我调用以下代码更新日历事件时,我收到 403 禁止错误。

for (Event event : events.getItems())
{
    event.setSummary("XXX" + event.getSummary());

    Event updatedEvent = calendar.events().update(CALENDAR_ID, event.getId(), event).execute();
}

这是返回的错误消息:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
    "code" : 403,
    "errors" : [ {
        "message" : "Forbidden"
     } ],
    "message" : "Forbidden"
}

我尝试了什么?好吧,我已经重新阅读了关于服务帐户的(相当糟糕的)Google 文档,重新检查了我的 API 控制台帐户设置,尝试更改构建凭据的代码(这会导致其他错误,所以是我之前线程的回归) .

简而言之,没有任何效果,所以我有什么明显的遗漏吗?

4

4 回答 4

26

解决了,感谢这个帖子。

您必须将您的 Google 日历帐户中的日历与 Google API 控制台中生成的服务帐户电子邮件共享,例如284XXXXXXXX@developer.gserviceaccount.com

我现在可以从我的网络服务更新我的日历。

于 2012-12-22T19:02:55.133 回答
5

即使在与贾斯汀的回答中共享日历后,我也遇到了同样的错误。在与另一个工作样本比较后发现我已经设置

var SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"];

代替

var SCOPES = ["https://www.googleapis.com/auth/calendar"];

希望这可以帮助任何犯过类似错误并遇到此错误的人。

于 2016-12-02T12:56:55.060 回答
2

就我而言,我必须在 Google API 控制台中启用 CalDAV API。如果禁用它会给出 403 响应。

我知道这是一个老问题,但这可能对某人有帮助。

于 2020-09-12T12:25:35.633 回答
0

对我来说,在尝试了上面所有建议的解决方案之后,没有任何效果。在查看了他们在文档中使用的范围后,我得到了它的工作。

我正在获取事件,似乎https://www.googleapis.com/auth/calendar范围还不够。我也必须添加https://www.googleapis.com/auth/calendar.events到我的范围。

希望它可以帮助那里的人!

于 2022-03-02T23:08:04.330 回答