Google Calendar API Ver3で2-legged OAuthを試してみた

| コメントをどうぞ

初めまして。infoScoop for Google Appsの開発を行っております中田と申します。

現在Google Calendar API Ver3.0が公開されています。このAPIではリクエスト認証にはOAuth2.0の使用が推奨されています。しかしAPIドキュメントによると現時点では2-legged OAuthを行う為にはOAuth 2.0のトークンは使えないので OAuth 1.0のトークン+APIキーを使えと記述されています。ところがAPIドキュメントには「OAuth 1.0のトークン+APIキー」の具体的な手法については特に記載されていません。色々調べてみるとGoogle Apps Developer Blogに以下の投稿がありました。

Calendar API v3, 2-legged OAuth & Java

今回はこのブログで紹介されているサンプルを実際に動かしてみました。
まず、Calendarサービスの初期化部分のコードです。

  public Calendar buildService() {
    HttpTransport transport = AndroidHttp.newCompatibleTransport();
    JacksonFactory jsonFactory = new JacksonFactory();

    // The 2-LO authorization section
    OAuthHmacSigner signer = new OAuthHmacSigner();
    signer.clientSharedSecret = "";

    final OAuthParameters oauthParameters = new OAuthParameters();
    oauthParameters.version = "1";
    oauthParameters.consumerKey = "";
    oauthParameters.signer = signer;

    Calendar service = Calendar.builder(transport, jsonFactory)
        .setApplicationName("")
        .setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() {
           @Override
           public void initialize(JsonHttpRequest request) {
             CalendarRequest calendarRequest = (CalendarRequest) request;
             calendarRequest.setKey("");
           }
         }).setHttpRequestInitializer(oauthParameters).build();
    return service;
}

上記のコード中の<CONSUMER_SECRET>、<CONSUMER_KEY>、<YOUR_API_KEY>については各アプリケーション固有の値を設定します。

Google Apps Marketplaceに登録されたアプリケーションの場合

アプリケーションがinfoScoop for Google AppsのようにGoogle Apps Marketplaceに登録されたアプリケーションの場合は、Google Apps MarketplaceのMy Vendor Profileから参照できる値を使用します。

<YOUR_API_KEY>についてはGoogle Apps Marketplaceにベンダー登録したアカウントでAPIコンソールを開き、「API Access」画面から確認できる値を使用します。

また、Google Appsの管理画面の 高度なツール >  認証 > サードパーティの OAuth クライアント アクセスを管理するから以下のCalendar APIのスコープを追加します。

https://www.googleapis.com/auth/calendar

もしくはGoogle Apps MarketplaceのListing Manifest中のスコープ設定に上記スコープを追加してください。

その他のアプリケーションの場合

Google Apps Marketplaceに登録されたアプリケーションではない場合はAPIコンソールからアプリケーション登録を行う必要があります。
まず、APIコンソールを開き、任意の任意のGoogleアカウントでログインします。

次に「Services」タブから使用するAPIを有効にします。今回の例では「Calendar API」をONにします。
初めてAPIの利用を行う場合には利用規約に同意する必要があります。

「API Access」タブを開き、「Create an OAuth 2.0 client ID…」から画面の指示に従いアプリケーションの登録を行います。


アプリケーションの登録が完了するとConsumer Key(Consumer ID)とConsumer Secretが参照できるようになります。ここで参照されるConsumer Key(Consumer ID)とConsumer Secretおよびアクセスキーを使用します。

ここまでの設定で前述のサンプルコードが動作するようになります。

 

APIの利用制限

APIキーを使用するAPIについてはAPIコンソールでの表示でも分かるとおり実行回数などに制限が加えられています。Calendar API Ver.3.0では1日あたり10000回までとなっています。

残念ながらGoogle Apps Marketplaceに登録したアプリケーションのConsumer Key Consumer Secretでもこの制限は有効となっています。現時点ではAPI実行回数の限定解除を行う為にはAPIコンソールからGoogleに対してお伺いを立てるしかないようです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>