17

Google Appsアカウント[email protected]project-1(GoogleデベロッパーコンソールでGoogle App Engineアプリケーションとして設定されています)と、それに属する電子メールアドレスが[email protected]のサービスアカウントがあるとします。GoogleカレンダーAPIを使用してサービスアカウントで作成したカレンダーを所有しているユーザーと、そのユーザーをどのように共有できますか?

私は、このサービスアカウントを使ってカレンダーを作成し、その項目をプログラムによって操作する方法を知っています。Google APIs Client Library(サービスアカウントの資格情報を持つJavaバージョン)を使用して、Google App Engineアプリケーション内でGoogleカレンダーAPIを呼び出し、それだけです。しかし、このように作成されたカレンダーは、Googleアカウントではなく、サービスアカウントによって明確に所有されているようです。私は次の観察から、これを結論:私はGoogle Calendar UIで私のGoogleアカウントのカレンダーを表示すると

  • は、プログラムによって作成されたカレンダーのどれもMy calendarsの下に表示しません。
  • このようなカレンダーにアクセスしようとすると、Other calendars |​​とサービスアカウントの電子メールアドレスでは、要求を送信できますが、決して答えられません(おそらく、サービスアカウントの電子メールアドレスが「実際の」電子メールアドレスではないため)。
  • プログラムでカレンダーを作成するときは、CalendarListEntry#hiddenを設定しないので、default falseを適用する必要があります。

私の質問は次のとおりです。通常のGoogleカレンダーWeb UIでは、GoogleカレンダーAPI(および私の場合はJavaクライアント)を使用してプログラムで作成されたカレンダーとカレンダーエントリにアクセスするにはどうすればよいですか。たとえば、サービスアカウントで所有するGoogleアカウントとカレンダーを共有できますか、UIのサービスアカウントの資格情報でGoogleアカウントのカレンダーを直接操作できますか?

私は同じトピックについていくつかの以前の質問があることを認識していますが、これまでのところ私の謎を解決する助けにはなりませんでした。

+0

を使ってディスカッションすると、同じことをやろうとしているようです。あなたはこの質問をチェックできますか?複数の人のカレンダーを更新したいときはどうしますか? http://stackoverflow.com/questions/23469075/is-service-account-in-google-calendar-api-v3-the-replacement-of-domain-consume-k –

+0

@JinzhaoHuoこれは現在、サービスで私のために働くアカウント(およびJava) - 受け入れられた回答を参照してください。複数の人のカレンダーがある場合、複数のサービスアカウントを使用する必要があるかもしれません... – Drux

+0

ありがとう、しかし私はそうは思わない。たとえば、私の会社に従業員が100人いるとしたら、カレンダーを更新するために100のサービスアカウントを作成する必要がありますか?意味がないようです。たぶん私は各従業員のためのGoogleのクライアントとカレンダーサービスを再構築し、従業員を偽装するサービスアカウントを持っている必要があります。 –

答えて

16

サービスアカウントによって作成されたカレンダーをプログラムで共有する必要があります。カレンダーはサービスアカウントによって所有されています。あなたがしようとした何

:あなたがそれらにアクセスする権利を持っていないので

  • カレンダーを使用すると、AppEngineの管理者であっても、自分のアカウントに表示されません。
  • サービスアカウントの電子メールアドレスがカレンダーの電子メールアドレスではないため、サービスアカウントの電子メールアドレスを入力してもUIにカレンダーが表示されません。 1つのサービスアカウントで複数のカレンダーを作成できます。

カレンダーをプログラムでアカウントと共有し、カレンダーの一意のIDを記録し、UIに入力します。

+3

+1 GoogleカレンダーAPI内で[Acl:insert](https://developers.google.com/google-apps/calendar/v3/reference/acl/insert)を使用し、 'role'を' writer 'に設定する必要があります'、' scope.type'を 'user'に、' scope.value'を 'some.account @ gmail.com'に変更しますか? – Drux

+3

はい、あなたが完全な自由を望むなら、あなた自身を所有者にするのが最も簡単です。 – koma

0

は、私はあなたがそれゆえ、あなたが使用できるようになりますPRNパラメータを使用して

(かなりのカレンダーの「所有者」アイデンティティに既存のGoogleアカウントのアドレスを偽装)PRNパラメータを指定してカレンダーを作成するために思っていましたあなたの名前(Googleアドレス)のイベントを追加する(たとえば)サービスアカウントの認証。

prnパラメータ

関連する問題