API 키 사용하기

여기에서는 Android용 Maps SDK에 사용할 API 키를 만들어 앱에 추가하고 키를 제한하여 앱을 보호하는 방법을 설명합니다. SDK를 사용하는 앱에는 반드시 API 키를 추가해야 합니다.

시작하기 전에

Android용 Maps SDK를 사용하려면 결제 계정이 있고 Android용 Maps SDK가 사용 설정된 프로젝트가 필요합니다. 자세한 내용은 Cloud Console에서 설정하기를 참고하세요.

API 키 만들기

API 키는 사용 및 결제 목적으로 프로젝트와 관련된 요청을 인증하는 고유 식별자입니다. 프로젝트에 연결된 API 키가 하나 이상 있어야 합니다.

API 키를 만들려면 다음 단계를 따르세요.

  1. API 및 서비스 > 사용자 인증 정보 페이지로 이동합니다.

    사용자 인증 정보 페이지로 이동

  2. 사용자 인증 정보 페이지에서 사용자 인증 정보 만들기 > API 키를 클릭합니다.
    API 키 생성 완료 대화상자에 새로 만든 API 키가 표시됩니다.
  3. 닫기를 클릭합니다.
    새 API 키는 사용자 인증 정보 페이지의 API 키 아래 나열됩니다.
    (프로덕션에 사용하기 전에 API 키를 제한하세요.)

앱에 API 키 추가

이 섹션에서는 앱에서 더욱 안전하게 참조할 수 있도록 API 키를 저장하는 방법에 대해서 설명합니다. API 키는 버전 제어 시스템에 등록하면 안 되며, 프로젝트의 루트 디렉터리에 있는 local.properties 파일에 저장하는 것이 좋습니다. local.properties 파일에 관한 자세한 내용은 Gradle 속성 파일을 참고하세요.

이 작업을 간소화하고 싶다면 Android용 Secrets Gradle Plugin을 사용하세요.

플러그인을 설치하여 API 키를 저장하는 방법은 다음과 같습니다.

  1. Android 스튜디오에서 앱 수준 build.gradle 파일을 열고 다음 코드를 plugins 요소에 추가합니다.
    id 'com.google.secrets_gradle_plugin' version '0.5'
        
  2. 파일을 저장하고 프로젝트를 Gradle과 동기화합니다.
  3. 프로젝트 수준 디렉터리에서 local.properties를 열고 다음 코드를 추가합니다. YOUR_API_KEY를 API 키로 변경합니다.
    MAPS_API_KEY=YOUR_API_KEY
        
  4. 파일을 저장하고 프로젝트를 Gradle과 동기화합니다.
  5. AndroidManifest.xml 파일에서 com.google.android.geo.API_KEY로 이동한 후 android:value attribute를 다음과 같이 업데이트합니다.
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="${MAPS_API_KEY}" />
        

참고: 위의 내용처럼, com.google.android.geo.API_KEY는 API 키의 권장 메타데이터 이름입니다. 이 이름의 키는 Android 플랫폼에서 Maps SDK for Android 등 여러 Google 지도 기반 API를 인증하는 데 사용할 수 있습니다. 이전 버전과의 호환성을 위해 API에서는 com.google.android.maps.v2.API_KEY 이름도 지원합니다. 이 기존 이름을 사용하면 Android 지도 API v2만 인증할 수 있습니다. 애플리케이션에서는 API 키 메타데이터 이름을 하나만 지정할 수 있습니다. 두 개가 모두 지정되면 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 선택 드롭다운에서 Android용 Maps SDK를 선택합니다.
        Android용 Maps SDK가 표시되지 않으면 사용할 수 있도록 설정해야 합니다.
  4. 변경을 완료하려면 저장을 클릭합니다.

SHA-1 디지털 지문 가져오기

API 키를 제한하는 경우 애플리케이션에 서명하는 데 사용된 서명 키의 SHA-1 인증서 디지털 지문을 제공해야 합니다. 디지털 지문은 콜론으로 구분된 20개의 두 자리 16진수 시퀀스입니다. 다음과 같은 두 가지 인증서 유형이 있습니다.

  • 디버그 인증서: 디버그 빌드를 실행할 때 Android SDK 도구에서 이 인증서를 자동으로 생성합니다. 이 인증서는 테스트 중인 앱에만 사용하세요. 디버그 인증서로 서명된 앱은 게시하지 마세요.
  • 출시 인증서: 출시 빌드를 실행할 때 Android SDK 도구에서 이 인증서를 생성합니다. keytool 프로그램을 사용하여 이 인증서를 생성할 수도 있습니다. 앱 스토어에 앱을 출시할 준비가 되면 이 인증서를 사용하세요.
  • 아래의 단계에 따라 Keytool 명령줄 앱을 사용하여 인증서의 SHA-1 디지털 지문을 표시합니다.

    디버그 인증서

    디버그 인증서 디지털 지문 표시

    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

    출력은 다음과 비슷하게 표시됩니다. SHA1으로 시작하는 행에 인증서의 SHA-1 디지털 지문이 포함됩니다.

    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을 인증서를 만들 때 인증서에 할당한 별칭으로 대체합니다.

    출력은 다음과 비슷하게 표시됩니다. SHA1으로 시작하는 행에 인증서의 SHA-1 디지털 지문이 포함됩니다.

    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
    

    디지털 인증서에 대한 자세한 내용은 앱 서명 관련 가이드를 참고하세요.