【Google APIs】OAuth2:Client IDの種類

Pocket

Google APIsのCalendar API(Java)を使用して、自分のアカウントの非公開カレンダーを表示するだけの機能を試行錯誤で作ってます。

検索かけても出てくる情報は古いものばかりで現在のAPIの仕様と同一ではなく、海外サイトやgoogleのフォーラムを見ながらの本当の試行錯誤になってしまいました(汗

だって本家Googleさんのサンプルをコピペしても、使われているAPIのクラスやメソッドが既に削除、もしくは仕様変更されてしまっているので動かないんですもの・・・。
まぁJava APIの最新バージョンもRC版みたいですし、今後も変わる可能性を考えると実装は他言語で行った方が良かったかなぁ・・・と今更ながらに思っています。


今回は(プロの方から見れば)基本と思われる、Client IDの種類について書いてみます。
自分はGoogle APIをいじるのは初めてなのでプロじゃないです_(:3」∠)_
なので、間違っている箇所や補足があったら随時、加筆修正していきます。

スポンサードリンク


これらのIDの種類はOAuth2でGoogleのリソースにアクセスする際に使用されます。
Google APIsを利用するためには取得は必須となるアカウントになります。(gmailアカウントと紐づいた別のAPI用アカウントを作ります)

Google APIs Consoleで作成できるIDは以下の3つです。
Google APIs Console

  1. WEB Application

    皆さんが最も身近に接しているであろう方法でOAuth2プロトコルを使用します。
    自分も使っているツイッターのWEBクライアント「twipple」を使用する際を例にしてみます。

    1. ログインページを開くと本家ツイッターの以下の様な画面が開く
      twitterのOAuthログイン
    2. ユーザ名とパスワードを入力し、認証されると元のページ(twipple)に戻ってくる

    こんな感じにユーザが自分の意志で認証する場合に使用します。


    特徴は上記や、下記の参考URLに表示されている図のように、ユーザーが認証ページを挟むことです。

    参考:Using OAuth 2.0 to Access Google APIs#Web server applications

  2. Service account

    Service accountはWEB Applicationとは違い、手動による認証ページを挟みません。
    その代り、プライベートキー(公開鍵暗証方式のpkcs12形式)を使用して認証します。
    今回の自分のように「自身が管理しているGoogleのリソースを一般公開する」場合、WEB Applicationのように見に来てくれた方の認証は不要です。認証する必要があるのは自分(WEBサーバー/アプリ)だけって場合に使用します。

    特徴は下記の参考URLに表示されている図のように、サーバサイドで認証を自動化できることです。
    ユーザの姿が図に表示されていない点に注目。

    参考:Using OAuth 2.0 to Access Google APIs#Service accounts

    当たり前ですが、他人のリソースにアクセスする為にはその人からプライベートキーを貰う必要があります。

  3. Installed application

    Installed applicationは端末インストール型のアプリで使用します。
    ほとんど調べていませんが、Web Applicationと挙動は同じになるかと思います。

    下記URLの図を見てみても、Web Applicationの図と同じですね。

    参考:Using OAuth 2.0 to Access Google APIs#Installed applications


本来の記事の趣旨からは逸れますが、認証画面を表示させないIDであるService accountに辿りつくまで結構かかってしましました(^^;

・・・と言うのも、Calendar APIのスタートアップ通りに進めていくと、Google Cloud Consoleというページ(先述したGoogle APIs Consoleではありません)でOAuth 2.0 Client IDを取ってこい!と指示されるのですが、このGoogle Cloud ConsoleというページでClient IDを取得しようとすると・・・
Google Cloud Console

こんなページで登録することになります。
「Web Application」「Android」「iOS」「Chrome」「Native」・・・。
この選択肢だったら間違いなく「Web Application」を選んでしまうじゃないですか・・・(´・ω・`)

そうすると「Web Application」のCLIENT IDやCLIENT SECRETが発行され、これ以降、Google Cloud Console上では「Service account」の作成が行えません_(:3」∠)_

今のところ、Google APIs Consoleでしか「Service account」の作成は行えないようですね・・・。


参考サイト



お役に立てましたか?

ブックマークをどうぞ!

スポンサード リンク

コメントを残す