Google Cloud 및 OAuth 설정

Google Health API에 대한 액세스 권한은 Google Cloud를 통해 제공됩니다. API를 사용 설정하고 Google 계정을 승인하려면 Google Cloud 프로젝트가 필요합니다.

기존 Fitbit API 개발자이든 Google Health API를 처음 사용하는 개발자이든 API를 호출하려면 이 단계를 완료해야 합니다.

프로젝트 및 OAuth 클라이언트 만들기

API 사용 설정 및 OAuth 2.0 클라이언트 ID 가져오기 버튼을 사용하여 Google Health API 를 사용 설정하고 OAuth 2.0 클라이언트 ID를 가져옵니다.

  1. Google Health API에 사용하려는 기존 Google Cloud 프로젝트가 있는 경우 먼저 해당 프로젝트의 관리자 계정에 로그인해야 합니다. 그런 다음 버튼을 클릭한 후 사용 가능한 프로젝트 목록에서 기존 프로젝트를 선택합니다. 그렇지 않으면 새 프로젝트를 만듭니다.
  2. '호출 위치'를 묻는 메시지가 표시되면 웹 서버 를 선택합니다.
  3. 승인된 리디렉션 URI 의 값으로 https://www.google.com 을 입력합니다. OAuth 2.0을 사용하여 승인 코드를 가져오려면 리디렉션 URI가 필요합니다.
  4. 설정이 완료되면 OAuth 2.0 클라이언트 ID 및 클라이언트 보안 비밀번호 값을 복사하고 사용자 인증 정보 JSON을 로컬 머신에 다운로드 합니다.
API 사용 설정 및 OAuth 2.0 클라이언트 ID 가져오기

Google Cloud 프로젝트를 수동으로 설정하거나 설정을 확인하고 사용자 인증 정보를 다시 가져오려면 다음 단계를 따르세요.

  1. API 사용 설정 페이지에서 Google Health API를 사용 설정합니다.
  2. 사용자 인증 정보 페이지에서 OAuth 2.0 클라이언트 ID를 가져옵니다.

Google 콘솔을 사용하여 OAuth 2.0을 설정하는 방법에 관한 자세한 내용은 OAuth 2.0을 사용하여 Google API에 액세스를 참고하세요.

테스트 사용자 추가

기본적으로 새로 생성된 OAuth 클라이언트는 테스트 및 프로덕션 목적으로 사용자 수가 100명으로 제한된 미인증 상태입니다. 이 기간 동안 승인을 사용 설정하려면 각 사용자의 이메일 주소를 프로젝트 구성의 테스트 사용자 목록에 수동으로 추가해야 합니다.

잠재고객 페이지에서 테스트 사용자 목록을 업데이트합니다.

  1. 이 페이지에는 "게시 상태"가 테스트로, "사용자 유형"이 외부로 설정되어 있어야 합니다.
  2. '테스트 사용자' 섹션에서 + 사용자 추가를 클릭합니다. 앱에 의료 데이터에 액세스할 수 있는 권한을 부여할 수 있도록 허용해야 하는 테스트 사용자의 이메일 주소를 입력합니다.
  3. 저장 을 클릭합니다.

Google Health API로 100명 이상의 사용자를 지원하려면 서드 파티 보안 검토를 완료해야 합니다. 자세한 내용은 OAuth 앱 인증 고객센터를 참고하세요.

범위 추가

데이터 액세스 페이지에서 클라이언트가 호출할 수 있는 범위를 지정해야 합니다.

  1. 이 페이지에서 범위 추가 또는 삭제 를 클릭합니다.
  2. API 열에서 'Google Health API'를 검색합니다. 애플리케이션에 필요한 범위를 선택합니다.
  3. 필요한 범위를 모두 선택한 후 업데이트 를 클릭하여 데이터 액세스 페이지로 돌아갑니다.
  4. 저장 을 클릭합니다.

클라이언트 ID 설정을 완료했으며 이제 Google Health API를 호출할 수 있습니다.

범위 업데이트

인증 요청에서 prompt 매개변수를 consent로 설정하여 사용자에게 앱을 다시 승인하도록 요청할 수 있습니다. prompt=consent가 포함되면 모든 범위가 이전에 Google API 프로젝트에 부여되었더라도 앱이 액세스 범위에 대한 승인을 요청할 때마다 동의 화면이 표시됩니다.

prompt=consent 매개변수를 사용하여 범위를 추가하거나 변경하려면 다음 단계를 따르세요.

  1. 애플리케이션에 필요한 범위의 전체 목록을 확인합니다. 여기에는 기존 범위와 추가해야 하는 새 범위가 모두 포함되어야 합니다.

  2. 공백으로 구분된 범위 값의 업데이트된 목록을 포함하도록 승인 URL의 범위 매개변수를 수정합니다.

  3. 인증 URI 매개변수에 prompt=consent를 추가합니다. 이렇게 하면 승인 서버에서 클라이언트에 정보를 반환하기 전에 사용자에게 동의를 요청합니다.

    다음 예에서는 prompt=consent가 추가된 여러 범위를 요청하는 Google의 OAuth 2.0 승인 엔드포인트에 대한 HTTPS GET 요청을 보여줍니다.

    https://accounts.google.com/o/oauth2/v2/auth?client_id=client-id&redirect_uri=redirect-uri&response_type=code&access_type=offline&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly%20https://www.googleapis.com/auth/googlehealth.sleep.readonly&prompt=consent
  4. 사용자가 업데이트된 링크를 클릭하면 요청된 모든 범위가 나열된 동의 페이지가 표시됩니다. 사용자가 '계속' 또는 '허용'을 클릭하면 전체 범위 집합을 포함하는 토큰으로 교환할 수 있는 새 승인 코드가 전송됩니다.

    새 갱신 토큰을 가져와야 하거나 요청된 범위가 변경된 경우와 같이 필요한 경우에만 prompt=consent를 포함합니다.

OAuth2 클라이언트 라이브러리

일반적인 프레임워크와 통합하는 데 사용되는 사용 가능한 OAuth2 클라이언트 라이브러리 목록은 OAuth 2.0을 사용하여 Google API에 액세스를 참고하세요.

갱신 토큰

지속적인 사용자 재인증 없이 Google API에 장기적으로 액세스하려면 애플리케이션에서 갱신 토큰을 사용해야 합니다. 필요한 특정 HTTP 요청 및 매개변수를 비롯한 포괄적인 구현 세부정보는 Google ID 플랫폼 문서를 참고하세요.

갱신 토큰을 액세스 토큰으로 교환하려면 Google OAuth 2.0 토큰 엔드포인트에 HTTPS POST 호출을 실행합니다. 다음 스니펫은 요청 및 응답의 예를 보여줍니다.

요청

curl -L -X POST 'https://oauth2.googleapis.com/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'client_id=client-id&client_secret=client-secret&refresh_token=refresh-token&grant_type=refresh_token'

응답

{
  "access_token": "access-token",
  "expires_in": 3599,
  "scope": "scope-list",
  "token_type": "Bearer",
  "refresh_token": "refresh-token",
  "refresh_token_expires_in": 112154
}

테스트 중 토큰 동작

Google Cloud 프로젝트의 게시 상태에 따라 갱신 토큰이 어떻게 동작하는지 알아두세요.

  • 테스트 모드: OAuth 동의 화면이 '테스트' 게시 상태로 구성된 경우 발급된 갱신 토큰은 시간 기반이며 7일 후에 만료됩니다. 이 기간 동안 만료일에 도달할 때까지 유효하고 새 액세스 토큰을 가져오는 데 사용할 수 있는 단일 갱신 토큰이 전송됩니다.
  • 게시된 모드: 앱이 '프로덕션 중' 상태로 이동되면 갱신 토큰은 일반적으로 취소되거나 장기간 (일반적으로 6개월) 사용되지 않는 한 만료되지 않습니다.

원활한 사용자 환경을 위해 프로덕션 환경으로 이동하기 전에 애플리케이션을 게시하여 7일 토큰 만료를 방지하세요.