试图为来自我网站的访问者在我的个人 gmail 帐户上的日历创建事件。但是我似乎无法让它工作。
目前我越来越
...
status: 200,
statusText: 'OK',
request: {
responseURL: 'https://www.googleapis.com/calendar/v3/calendars/primary/events?timeMin=2023-03-03T17%3A37%3A25.280Z&maxResults=10&singleEvents=true&orderBy=startTime'
}
}
No upcoming events found.
这很奇怪,因为我在注册服务帐户的帐户下创建了一些日历条目。
我读到服务人员不能在谷歌工作区之外操作,但是错误与我自己的不同,让我认为他们已经改变了这一点。
总结一下,我问是否可以从我的服务器创建日历事件到个人日历,而无需获取工作空间?
我已经从这个 service worker 创建并列出了日历。使用
calendarId: "primary"
。这些事件正在创建和列出,因此它们存在。但是,它们不在我的个人帐户中。同样,服务人员注册的我的个人帐户也没有在我的个人日历中显示事件。
您不能使用服务帐户为消费者帐户创建谷歌日历事件。背后的原因是你需要对服务帐户进行DWD,然后模拟用户,但
gmail.com
不是你拥有的域,所以它会失败。
但是,有一种方法可以让您在没有服务帐户的情况下在您的消费者帐户上创建事件。它要求您遵循 OAuth 2.0 for Web Server Applications.
的流程上面流程的关键部分是用refresh token获取access token。将刷新令牌存储在安全的地方。使用访问令牌对 google calendar api 进行 api 调用,如果过期,则使用刷新令牌获取新的访问令牌等。
Web 服务器工作流工作得很好,但是如果你想使用 service worker 工作流,你必须与 service worker 共享日历,并使用帐户所有者的电子邮件地址作为
calendarId
而不是 primary