OAuth 2.0 の設定
OAuth 2.0 をアプリケーションで使用するには OAuth 2.0 クライアント ID が必要です。アプリケーションは OAuth 2.0 アクセス トークンを要求するときにこの ID を使用します。
コンソールで OAuth 2.0 クライアント ID を作成するには:
- Google Cloud Platform Console にアクセスします。
- プロジェクト リストからプロジェクトを選択するか、新しいプロジェクトを作成します。
- API Manager ページがまだ開いていない場合は、コンソール メニュー
を開いて [API Manager] を選択します。
- 左側のエリアで [認証情報] をクリックします。
- [新しい認証情報] をクリックし、[OAuth クライアント ID] を選択します。
注: OAuth 2.0 がプロジェクトに適切かどうかわからない場合は、[ウィザードで選択] を選択し、指示に沿って適切な認証情報を選んでください。
- プロジェクトの適切なアプリケーションの種類を選択し、必要な追加情報を入力します。アプリケーションの種類については次のセクションで詳しく説明します。
- 今回初めてクライアント ID を作成する場合は、[同意画面] をクリックして同意画面を設定することもできます(同意画面の設定方法については、次の手順で説明します)。最初に設定しておくと、それ以降同意画面の設定は要求されません。
- [クライアント ID の作成] をクリックします。
クライアント ID を削除するには、[認証情報] ページに移動し、ID の横のチェックボックスをオンにして [削除] をクリックします。
ユーザーの同意認証に OAuth 2.0 を使用する場合、ユーザーはユーザー同意画面の規約に同意した後に認証されます。
プロジェクトの同意画面を設定するには:
- Google Cloud Platform Console の [認証情報] ページにアクセスします。
- 左側のエリアで [認証情報] をクリックします。
- [OAuth 同意画面] をクリックします。
- フォームに入力して [保存] をクリックします。
注: コンソール内の同意画面設定はプロジェクト レベルで設定されるため、[同意画面] ページで指定した情報はプロジェクト全体に適用されます。
ユーザー認証について詳しくは、OAuth 2.0 のドキュメントをご覧ください。
サービス アカウント、ウェブ アプリケーション、インストール型アプリケーション
サービス アカウント、ウェブ アプリケーション、インストール型アプリケーションについて詳しくは、以下のトピックをご覧ください。
サービス アカウントサービス アカウントは、ユーザー情報にアクセスしないアプリケーションの代わりに API を呼び出すアプリケーションで使用されます。この種のアプリケーションは自身の身元を証明する必要がありますが、リクエストを承認するためのユーザーは必要ありません。
たとえば、ウェブ アプリケーションと Google Cloud Storage の間でみられるようなサーバー間のやり取りをプロジェクトで使用する場合は、秘密鍵とその他のサービス アカウント認証情報が必要です。これらの認証情報を生成するか、既に生成されているメールアドレスと公開鍵を確認するには、次の手順に従います。
- Google Cloud Platform Console の [認証情報] ページを開きます。
- まだ選択していない場合は、認証情報を作成するプロジェクトを選択します。
- 新しいサービス アカウントを設定するには、[新しい認証情報] をクリックして [サービス アカウント キー] を選択します。
- 鍵に使用するサービス アカウントを選択します。
- サービス アカウントの公開鍵 / 秘密鍵を標準の P12 ファイルとしてダウンロードするか、または Google API クライアント ライブラリで読み込むことができる JSON ファイルとしてダウンロードするかを選択します。
新しい公開鍵 / 秘密鍵のペアが生成され、マシンにダウンロードされます。これはこの鍵の唯一のコピーです。これはお客様の責任で安全に保管する必要があります。
秘密鍵はサーバー間のやり取りで OAuth 2.0 アクセス トークンを要求するときに必要となります。Google はこの秘密鍵のコピーを保持しておらず、この画面がこの特定の秘密鍵を取得できる唯一の場所です。[秘密鍵をダウンロード] をクリックすると、PKCS #12 形式の秘密鍵がローカルマシンにダウンロードされます。画面の指示に沿って、この鍵を自分自身で安全に保管する必要があります。
ダウンロードされた秘密鍵の名前はその鍵の母印です。コンピュータで鍵を検証するとき、またはアプリケーションで鍵を使用するときは、パスワード notasecret
を提供する必要があります。Google で発行される秘密鍵のパスワードはすべて同じ(notasecret
)ですが、それぞれの鍵は暗号的に一意です。
単一のサービス アカウントに対して公開鍵 / 秘密鍵のペアを複数生成できます。そのため、アプリケーションのダウンタイムなしに認証情報の更新や展開が簡単にできます。ただし、そのサービス アカウントに対して作成された鍵のペアが 1 つだけの場合、そのペアは削除できません。
サポートされている Google API へのアクセス権をサービス アカウントに付与するときは、メールアドレスを使用します。
詳しくは、OAuth 2.0 サービス アカウントのドキュメントをご覧ください。
注: サービス アカウントを使用するときは、エンドユーザーとデベロッパーの両方の立場で各サービスの利用規約に従うことになります。
Google サービス アカウントのドキュメントに、サービス アカウントに関する詳しい説明があります。
ウェブ アプリケーションにはウェブブラウザからネットワーク経由でアクセスします。
- JavaScript を使用して Google API にアクセスするアプリケーションでは、承認済みの JavaScript 生成元を指定する必要があります。 この生成元により、アプリケーションが API リクエストを送信できる送信元ドメインが識別されます。
- PHP、Java、Python、Ruby、.NET などの言語やフレームワークを使用するアプリケーションでは、承認済みのリダイレクト URI を指定する必要があります。このリダイレクト URI は、OAuth 2.0 サーバーがレスポンスを送信できる宛先エンドポイントとなります。
アプリケーションがデバイスまたはコンピュータ(Microsoft Windows、Apple OS X、Apple iOS、Android を実行しているシステムなど)にインストールされる場合は、Google の OAuth 2.0 ドキュメントのインストール型アプリケーションとデバイスで説明されている 2 種類の OAuth 2.0 フローのどちらかを使用できます。
ChromeGoogle Chrome のアプリと拡張機能はインストール型アプリケーションの特殊なケースです。Chrome は、Chrome アプリ / 拡張機能が各種操作を実行できるようにするための JavaScript API を公開しています。これらの API の一部は Chrome にログインしているユーザーの ID が既知であることに依存しています。ユーザーの ID がわかっていなければならない API を内部で呼び出す Chrome アプリ / 拡張機能を作成する場合に、そのアプリ / 拡張機能が OAuth 2.0 を使用してそれらのリクエストのユーザー承認を得られるようにするときは、認証情報の作成時にプラットフォームとして Chrome を選択します。Chrome アプリ / 拡張機能のアプリケーション ID を入力する必要があります。これらの API について詳しくは、Google Chrome Identity API のドキュメントをご覧ください。
注: 現時点で、AccountManager による OAuth 2.0 アクセス トークンの取得は Android Ice Cream Sandwich(4.0)以降のバージョンで機能します。
Android アプリのパッケージ名と SHA1 フィンガープリントを指定する必要があります。
- [パッケージ名] フィールドに Android アプリのパッケージ名を入力します。
- ターミナルで Keytool ユーティリティを実行して、デジタル署名された
.apk
ファイルの公開証明書の SHA1 フィンガープリントを取得します。keytool -exportcert -alias androiddebugkey -keystore path-to-debug-or-production-keystore -list -v
注:
debug.keystore
の場合、パスワードは android です。Eclipse の場合、デバッグ キーストアは通常~/.android/debug.keystore
にあります。Keytool によりフィンガープリントがシェルに出力されます。次に例を示します。
$ keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v
Enter keystore password: Type "android" if using debug.keystore
Alias name: androiddebugkey
Creation date: Aug 27, 2012
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 503bd581
Valid from: Mon Aug 27 13:16:01 PDT 2012 until: Wed Aug 20 13:16:01 PDT 2042
Certificate fingerprints:
MD5: 1B:2B:2D:37:E1:CE:06:8B:A0:F0:73:05:3C:A3:63:DD
SHA1: D8:AA:43:97:59:EE:C5:95:26:6A:07:EE:1C:37:8E:F4:F0:C8:05:C8
SHA256: F3:6F:98:51:9A:DF:C3:15:4E:48:4B:0F:91:E3:3C:6A:A0:97:DC:0A:3F:B2:D2:E1:FE:23:57:F5:EB:AC:13:30
Signature algorithm name: SHA1withRSA
Version: 3
上記の例で太字になっている SHA1 フィンガープリントをコピーします。
重要: ユーザーへのアプリのリリースを準備するとき、これらの手順をもう一度実行して本番アプリ用の新しい OAuth 2.0 クライアント ID を作成します。本番アプリでは、独自の秘密鍵を使用して本番アプリの
.apk
ファイルに署名します。詳しくは、アプリケーションの署名をご覧ください。 - SHA1 フィンガープリントをフォームの該当する欄に貼り付けます。
- [作成] をクリックします。
アプリケーションが iOS から直接 API にアクセスする場合は、アプリケーションのバンドル ID と(オプションで)その Apple App Store ID が必要です。
- アプリケーションのバンドル ID は、アプリの
.plist
ファイルにリストされたバンドル識別子です。例:com.example.myapp
。 - アプリケーションの App Store ID は、アプリが Apple iTunes App Store で公開された場合のアプリの iTunes URL です。たとえば、アプリの URL が
http://itunes.apple.com/us/app/google+/id447119634
の場合、App Store ID は447119634
です。 - アプリケーションのチーム ID は、Apple によって開発チームに割り当てられた 10 桁の文字列です。チーム ID について詳しくは、Apple の『アプリケーションの配布に関するガイド』のチーム ID を調べるをご覧ください。
iOS 認証情報を作成してクライアント ID を取得した後、インストール型アプリケーションの OAuth 2.0 フローに従って Google API と通信します。
その他の種類のインストール型アプリケーションについては、コンソールで OAuth 2.0 認証情報を作成する際に追加情報は要求されません。