0

まず、ビジネスアカウントに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はカレンダーを共有するように設定されており(最初のクエリで明らかなように)、開発者アカウントがそのビジネスにアクセスできない理由がわかりません。

4

2 に答える 2

0

私はあなたと同様の結果を期待していましたが、service_accountクレデンシャルを使用するとnotFoundエラーも発生しました。私にとって有効な解決策は、カレンダー共有ページに移動し、カレンダーを#####@developer.gserviceaccount.comメールアドレスと明示的に共有することでした。

于 2013-03-27T17:42:06.940 に答える
0

詳細がわからないことをお詫び申し上げますが、これが最終的に解決されたのは、Apps for Businessアカウントの所有者に、開発者のメールアドレス(#####@developer.gserviceaccount.com)を代理人として追加してもらうことでした。ビジネスアカウントの誰のfreeBusy時間を取得できます。カレンダー自体にユーザーとして#####@developer.gserviceaccount.comを追加するという別の答えも機能しました(ただし、すべてのユーザーに対してこれを行う必要がありました)

于 2013-03-30T22:52:50.743 に答える