我必须从java网络应用程序访问谷歌日历才能获得并特别是将事件添加到共享谷歌日历 我从谷歌跟踪了java快速启动example,到目前为止一切正常
然后我更改了该示例中的authorize方法以使用服务帐户,并且身份验证似乎有效但从Google返回的日历列表为空
我已经与服务帐户电子邮件共享了日历,但这并没有改变任何内容
答案 0 :(得分:1)
服务帐户是虚拟用户。它有自己的Google日历帐户。默认情况下,它无法访问您需要与之共享Google日历或向其中插入新Google日历所需的任何Google日历。
Calendar.list完全是它在Calendars网站左下角的小盒子。为了使日历显示在那里,我需要将其插入calendar.list。
<强>解决方案:强>
转到Google日历网站,以您日历的用户身份添加服务帐户电子邮件地址。然后,服务帐户将能够访问它。如果你想要,你可以编程方式将它插入calendar.list,如果你真的需要它在那里。 IMO对于带有服务帐户的Calendar.list来说真的没什么意义。
<强>更新强>
您应该可以授予您的服务帐户访问权限,以便像其他任何用户一样执行您喜欢的操作。
如果您希望通过服务帐户代码calendar.list拨打Calendarlist.insert。您只需运行一次即可将有问题的日历插入服务帐户日历列表中。
尝试在应该具有访问权限的日历上运行Calendars.get,而无需将其插入calendar.list