まず、ビジネスアカウントにGoogleアプリを使用しており、test1@mycompany.comとtest2@mycompany.comの2つのアカウントがあります。
その後、APIコンソールでtest1@mycompany.comに登録されたApi Eメールがあり、これを#####@developer.gserviceaccount.comとして表します。
クエリは単純です。timeMinとtimeMaxとそれぞれIDを持つ2つのアイテムがあり、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」エラーの取得)を使用して2番目の認証方法で取得したものです。
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はカレンダーを共有するように設定されており(最初のクエリで明らかなように)、開発者アカウントがそのビジネスにアクセスできない理由がわかりません。