Oauth 2.0 403通过OAuth 2.0使用服务帐户调用v3 Google日历API时禁止的消息

Oauth 2.0 403通过OAuth 2.0使用服务帐户调用v3 Google日历API时禁止的消息,oauth-2.0,google-calendar-api,http-status-code-403,Oauth 2.0,Google Calendar Api,Http Status Code 403,这是我的帖子中关于使用Google日历API和OAuth2时出现401错误的后续文章,可以找到 这包含了导致我下一个问题的帐户设置的详细信息,所以我不会在这个线程中重复我自己 好的,当我调用下面的代码来更新日历事件时,我得到一个403禁止的错误 for (Event event : events.getItems()) { event.setSummary("XXX" + event.getSummary()); Event updatedEvent = calendar.ev

这是我的帖子中关于使用Google日历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"
}
我试过什么?嗯,我已经重新阅读了关于服务帐户的(相当糟糕的)谷歌文档,重新检查了我的API控制台帐户设置,尝试更改构建凭证的代码(这会导致其他错误,因此是对我以前线程的回归)

简言之,什么都不管用,所以我有什么明显的遗漏吗?

问题解决了,多亏了这篇文章

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


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

即使在分享了Justin的答案中的日历后,我也会收到相同的错误。在与另一个工作样本进行比较后,我发现我已经设置了

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

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

希望这能帮助犯过类似错误的人。在我的例子中,我必须在谷歌API控制台中启用CalDAV API。如果禁用,它将给出403响应


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

hii u plz可以告诉我如何从谷歌控制台共享日历吗?我已经为我的android日历共享了此日历,但没有得到任何解决方案?仍然存在此错误。我在403中遇到错误。当我共享我的日历时,它会显示我的电子邮件id作为所有者,请如何配置???我也有同样的问题。解决方案是:1)检查为Calendar.Builder()设置的所有凭据。2) 与您的服务帐户共享日历,并确保在“权限设置”中选择了“更改事件”。最好还是继续发布。随着API的发展,可能会出现这种错误的新原因。我真不敢相信我七年前就发布了这个问题!你好!这个解决方案对我很有效,非常感谢!