首先,我使用谷歌应用程序的商业帐户,我有两个帐户test1@mycompany.com和test2@mycompany.com
之后,我有一个Api E-Mail,它在Api控制台中注册到test1@mycompany.com,我将其表示为#####@developer.gserviceaccount.com
查询很简单,我只是有一个timeMin &timeMax,使用Java客户端API
发送此消息第一个查询与GoogleAuthorizationCodeFlow和使用test1@mycompany.com
{
"kind": "calendar#freeBusy",
"timeMin": "2013-03-26T22:50:16.501Z",
"timeMax": "2013-03-26T22:50:22.501Z",
"calendars": {
"test1@mycompany.com": {
"busy": []
},
"test2@mycompany.com": {
"busy": []
}
}
}
这是我得到的第二个授权方法使用(获取错误"notFound")
GoogleCredential.Builder()
.setServiceAccountId("#####@developer.gserviceaccount.com")
.setServiceAccountPrivateKeyFromP12File("key.p12").etc().etc()
{
"kind": "calendar#freeBusy",
"timeMin": "2013-03-26T22:19:14.770Z",
"timeMax": "2013-03-26T22:19:20.770Z",
"calendars": {
"test1@mycompany.com": {
"busy": []
},
"test2@mycompany.com": {
"errors": [
{
"domain": "global",
"reason": "notFound"
}
],
"busy": []
}
}
}
即使test1@mycompany.com可以获得访问test2@mycompany.com #####@developer.gserviceaccount.com不能,为什么这是他们都是真正的相同的帐户是他们不是吗?#####@developer.gserviceaccount.com属于test1@mycompany.com。Test2@mycompany.com被设置为共享日历(如第一个查询中所示),我不知道为什么开发人员帐户不能访问该业务。
我期望得到与您类似的结果,但在使用service_account凭据时,我也得到了notFound错误。对我来说有效的解决方案是进入日历共享页面,并显式地与#####@developer.gserviceaccount.com电子邮件地址共享我的日历。
我很抱歉没有更多的细节,但这个问题最终是如何解决的,是通过让Apps for Business帐户的所有者添加开发者的电子邮件地址(#####@developer.gserviceaccount.com)作为委托,现在我可以得到商业帐户上任何人的空闲时间。另一种方法是在日历本身上添加#####@developer.gserviceaccount.com作为用户。(虽然我必须为每个用户做这个)