あまりいい記事がなかったので、書き残しておきます。
結論からいうと、毎度のごとく、+keisuke oohashiさんの助けにより
うまく動作させることができました。(ありがとうございます!)
Two-legged OAuthがGoogle Apps無料版でも利用できるのかどうかを
確認した時の投稿(あまり参考になりません)
https://plus.google.com/u/0/114183076079015753160/posts/j4sHzchyHWs
Two-legged OAuthを検証し始めた時のGoogle+の投稿(参考にするならこちら)
https://plus.google.com/u/0/114183076079015753160/posts/8NCiJghLapC
Two-legged OAuthのポイント
- 認証用のオブジェクトと、各種APIにアクセスするためのオブジェクトを生成する。(以下の例はCalendar API)
OAuthHmacSigner signer = new OAuthHmacSigner();
signer.clientSharedSecret = "<クライアントシークレット>";
OAuthParameters param = new OAuthParameters();
param.version = "1";
param.consumerKey = "<コンシューマキー>";
param.signer = signer;
Calendar calendar = new Calendar.Builder(httpTransport, jsonFactory, null)
.setHttpRequestInitializer(param)
.setCalendarRequestInitializer(new CalendarRequestInitializer("<Simple API AccessにあるAPI KEY>"))
.build();
service = new CalendarService(calendar);
コンシューマーキーはGoogle Appsだと、取得したドメイン名のスーパーキーが標準で用意されているのでそれを使うのが簡単ですが、実際に運用する場合は自分で作った方がいいでしょう。作成する場所はGoogle Appsの管理コントロールパネルから高度なツールを選択して「サードパーティのOAuthクライアントアクセスを管理する」から作成して下さい。コンシューマーシークレットも同じページの「管理」リンクをクリックすることで見ることができます。次にSimple API AccessにあるAPI KEYですが、これは、「Google APIs Console」を表示してAPI Accessメニューをクリックすると表示されるKEYを指定します。(Google Appsの管理者アカウントでアクセスした方が無難です)
- 編集する対象のユーザを指定する。
ArrayMap<String, Object> customMap = new ArrayMap<String, Object>();
customMap.add("xoauth_requestor_id", "<対象のアカウント>");
com.google.api.services.calendar.Calendar api = service.getService();
com.google.api.services.calendar.Calendar.Events.List eventList = api.events().list(target_email)
.setTimeMin(new DateTime(fmt.format(Calendar.getInstance().getTime()) + "T00:00:00+09:00"))
.setFields("items(id,summary)")
.setMaxResults(1000);
eventList.setUnknownKeys(customMap);
Events events = eventList.execute();
Two-legged OAuthは管理用途で利用される機能(?)なので、編集する対象のユーザを指定しないとどのユーザのデータを編集するのかがわからないので対象のユーザを指定して下さい。
以上で、Two-legged OAuthを使った管理作業が可能になると思います。
0 件のコメント:
コメントを投稿