API キーを取得する

始める前に

Maps SDK for Android のご利用にあたっては、請求先アカウントと Maps SDK for Android が有効なプロジェクトが必要です。 詳しくは、Google Maps Platform スタートガイドをご覧ください。

API キーを作成する

API キーは、使用量を正確に集計して課金するため、プロジェクトに関連付けられたリクエストであることを認証する一意の識別子です。少なくとも 1 つの API キーをプロジェクトに関連付ける必要があります。

API キーを作成するには:

  1. [API とサービス] > [認証情報] を選択します。

    [認証情報] ページに移動

  2. [認証情報] ページで、[認証情報を作成] > [API キー] をクリックします。
    [API キーを作成しました] ダイアログで、新しく作成された API キーが表示されます。
  3. [閉じる] をクリックします。
    新しく作成した API キーが [認証情報] ページの [API キー] に表示されます。
    (本番環境で使用する前に、忘れずに API キーの使用を制限してください)。

アプリに API キーを追加する

API キーは、バージョン管理システムにはチェックインせず、プロジェクトのルート ディレクトリにある local.properties ファイルに保存することをおすすめします。local.properties ファイルについて詳しくは、Gradle プロパティ ファイルをご覧ください。 次の Gradle 手法では、アプリで安全に参照されるように API キーを local.properties ファイルに保存する方法を紹介しています。

API キーを追加するには:

  1. プロジェクト レベル ディレクトリで local.properties を開き、そのファイルに以下のコードを追加します。YOUR_API_KEY を API キーに置き換えます。
    MAPS_API_KEY=YOUR_API_KEY
      
  2. アプリレベルの build.gradle ファイルで、このコードを defaultConfig 要素に追加します。これにより、Android Studio はビルド時に local.properties ファイルから Maps API キーを読み取り、mapsApiKey ビルド バリアンドを Android マニフェストに挿入できるようになります。
    android {
        defaultConfig {
            // ...
            // Set the properties within `local.properties` into a `Properties` class so that values
            // within `local.properties` (e.g. Maps API key) are accessible in this file.
            Properties properties = new Properties()
            if (rootProject.file("local.properties").exists()) {
                properties.load(rootProject.file("local.properties").newDataInputStream())
            }
    
            // Inject the Maps API key into the manifest
            manifestPlaceholders = [ mapsApiKey : properties.getProperty("MAPS_API_KEY", "") ]
        }
    }
      
  3. AndroidManifest.xml ファイルで、次のコードを application 要素の子要素として追加します。
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${mapsApiKey}" />
        
  4. ファイルを保存して、プロジェクトを Gradle と同期します。

注: 上記のように、com.google.android.geo.API_KEY は、API キーとして推奨されるメタデータ名です。この名前のキーは、Android プラットフォームで Google マップベースの複数の API(Maps SDK for Android など)の認証に使用できます。下位互換性を確保するため、API では com.google.android.maps.v2.API_KEY という名前もサポートされています。この従来の名前は、Android Maps API v2 の認証にのみ使用できます。アプリでは、API キーのメタデータ名を 1 つのみ指定できます。両方を指定すると、API から例外がスローされます。

API キーを制限する

API キーを制限し、許可したリクエストでのみ API キーが使用されるようにすることで、アプリケーションのセキュリティが向上します。以下の手順に沿って API キーの制限を設定することを強くおすすめします。詳しくは、API キーに関する推奨事項をご覧ください。

API キーを制限するには:

  1. [API とサービス] > [認証情報] を選択します。

    [認証情報] ページに移動

  2. 制限を設定する API キーを選択します。選択した API キーのプロパティ ページが表示されます。
  3. [キーの制限] で、次の制限を設定します。
    • アプリケーションの制限:
      1. [Android アプリ] を選択します。
      2. [+ パッケージ名とフィンガープリントを追加] をクリックします。
      3. パッケージ名と SHA-1 証明書のフィンガープリントを入力します。例:
        com.example.android.mapexample
        BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
        (詳しくは、アプリの SHA-1 フィンガープリントを取得する場所をご覧ください)。
    • API の制限:
      1. [キーを制限] をクリックします。
      2. [API を選択] プルダウンから [Maps SDK for Android] を選択します。
        (Maps SDK for Android がリストに表示されない場合は、この API を有効にする必要があります)。
  4. 変更が完了したら、[保存] をクリックします。

アプリの SHA-1 フィンガープリントを取得する場所

Android API キーの制限は、アプリのデジタル証明書の簡略形(SHA-1 フィンガープリントとも呼ばれます)を基にしています。

Android Studio から証明書情報を取得する

Maps SDK for Android のスタートガイドに沿って操作すると、Android Studio でアプリの認証情報を含む便利な google_maps_api.xml ファイルが作成されます。

次のいずれかの方法を選んで、Android Studio で API キーを取得します。

  • すばやく簡単に取得する方法: Android Studio で作成された google_maps_api.xml ファイルで指定されているリンクを使用します。
    1. google_maps_api.xml ファイルにあるリンクをコピーして、ブラウザに貼り付けます。このリンクを使用すると、Google Cloud Console が開き、URL パラメータによって必要な情報が Cloud Console に入力されるため、必須項目を手動で入力する手間を省くことができます。
    2. 手順に沿って、Cloud Console で新しいプロジェクトを作成するか、既存のプロジェクトを選択します。
    3. プロジェクトで使用する Android 限定の API キーを作成します。
    4. 作成された API キーをコピーして、再度 Android Studio に移動して google_maps_api.xml ファイルの <string> 要素内に貼り付けます。
  • 手動による方法: Android Studio で作成された google_maps_api.xml ファイルで指定されている認証情報を使用します。
    1. google_maps_api.xml ファイルにある認証情報をコピーします。
    2. Google Cloud Platform Console に移動します。
    3. コピーした認証情報を使用して、既存の API キーにアプリを追加するか、新しい API キーを作成します。

証明書情報を自分で取得する

アプリをスタートガイドに沿って作成しなかった場合は、証明書の SHA-1 フィンガープリントをご自身で取得していただく必要があります。最初に、正しい証明書を使用していることを確認してください。証明書には次の 2 種類があります。

  • デバッグ用証明書: この証明書は、デバッグビルドを行う際に Android SDK ツールによって自動的に生成されます。この証明書は、テストしているアプリでのみ使用してください。デバッグ用証明書で署名されたアプリを公開しないでください。 デバッグ用証明書について詳しくは、Android デベロッパー向けドキュメントのデバッグモードでの署名に関する説明をご覧ください。
  • リリース用証明書: この証明書は、リリースビルドを行う際に Android SDK ツールによって生成されます。keytool プログラムを使用してこの証明書を生成することもできます。この証明書は、アプリを一般向けにリリースす準備が整っている場合に使用してください。

-v パラメータを指定した keytool プログラムを使用して、証明書の SHA-1 フィンガープリントを表示するには、次の手順を参考にしてください。Keytool について詳しくは、Oracle のドキュメントをご覧ください。

デバッグ用証明書

デバッグ用証明書のフィンガープリントを表示する

  1. デバッグ用のキーストア ファイルを見つけます。ファイル名は debug.keystore です。このファイルはプロジェクトを初めて構築するときに作成され、デフォルトでは、Android Virtual Device(AVD)ファイルと同じディレクトリに保存されます。

    • macOS と Linux: ~/.android/
    • Windows Vista、Windows 7: C:\Users\your_user_name\.android\
  2. SHA-1 フィンガープリントを一覧表示します。

    • Linux や macOS の場合は、ターミナル ウィンドウを開いて次のコマンドを入力します。

      keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    • Windows Vista と Windows 7 の場合は、次を実行します。

      keytool -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

次のような出力が表示されます。

Alias name: androiddebugkey
Creation date: Jan 01, 2013
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: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
     MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
     SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
     Signature algorithm name: SHA1withRSA
     Version: 3
リリース用証明書

リリース用証明書のフィンガープリントを表示する

  1. リリース用証明書のキーストア ファイルを見つけます。リリース用キーストアには、デフォルトの保存場所や名前はありません。リリース対象のアプリを作成する際にキーストアを指定しなかった場合は、.apk が未署名のままになります。このため、アプリを公開するには事前に署名する必要があります。リリース用証明書では、証明書のエイリアスと、キーストアおよび証明書のパスワードも必要です。次を入力すると、キーストア内のすべてのキーのエイリアスが表示されます。

    keytool -list -keystore your_keystore_name

    your_keystore_name を、完全修飾されたパスとキーストアの名前(.keystore 拡張子を含む)に置き換えます。キーストアのパスワードが要求されます。パスワードを入力すると、keytool にキーストア内のすべてのエイリアスが表示されます。

  2. ターミナルまたはコマンド プロンプトで次を入力します。

    keytool -list -v -keystore your_keystore_name -alias your_alias_name

    your_keystore_name を、完全修飾されたパスとキーストアの名前(.keystore 拡張子を含む)に置き換えます。your_alias_name を、証明書の作成時に割り当てたエイリアスに置き換えます。

次のような出力が表示されます。

Alias name: <alias_name>
Creation date: Feb 02, 2013
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: 4cc9b300
Valid from: Mon Feb 02 08:01:04 UTC 2013 until: Mon Feb 02 18:05:04 PST 2033
Certificate fingerprints:
    MD5:  AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6B:AC:F9
    SHA1: BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:90:AF:A1:66:6E:44:5D:75
    Signature algorithm name: SHA1withRSA
    Version: 3

SHA1 で始まる行に、証明書の SHA-1 フィンガープリントが含まれています。このフィンガープリントは、コロンで区切られた 20 個の 2 桁の 16 進数で構成されるシーケンスです。

デジタル証明書について詳しくは、Android のアプリへの署名に関するガイドをご覧ください。