1. 소개
OAuth 2.0 Playground는 코드를 작성하지 않고도 Google OAuth 2.0 흐름을 테스트할 수 있는 웹 기반 도구입니다. 이 Codelab에서는 Google Cloud 프로젝트를 설정하고, 사용자 인증 정보를 가져오고, OAuth 2.0 Playground로 승인 흐름을 시작하고, Google Health API 엔드포인트 중 하나에 첫 번째 호출을 하는 방법을 보여줍니다.
학습할 내용
- Google Cloud 콘솔 내에서 클라이언트 ID를 설정하는 방법
- Google OAuth 2.0 승인 흐름을 거쳐 OAuth 2.0 Playground를 사용하여 액세스 토큰과 갱신 토큰을 가져오는 방법
- OAuth 2.0 Playground를 사용하여 Google Health API 엔드포인트에 호출하는 방법
필요한 항목
- Google 계정
- Fitbit 모바일 앱
- OAuth 2.0 Playground
Fitbit 모바일 앱을 설정하려면 다음 단계를 따르세요.
- Apple App Store 또는 Google Play 스토어에서 Fitbit 모바일 앱을 검색하여 다운로드합니다.
- 앱 아이콘을 선택합니다.
- Google 계정으로 로그인을 클릭합니다.
- Google 계정을 선택하고 계속 버튼을 누릅니다.
2. Google Cloud 프로젝트 설정
Google Cloud 콘솔을 사용하여 클라이언트 ID를 만들고 Google Health API 사용을 사용 설정합니다.
- Google Cloud 콘솔에 로그인합니다.
- 새 프로젝트를 만들려면 다음 단계를 따르세요.
- 프로젝트 선택 도구에서 프로젝트 선택을 클릭합니다.
- 오른쪽 상단에서 새 프로젝트를 선택합니다.
- 프로젝트 이름을 입력합니다.
- 위치를 입력합니다 (예: '조직 없음').
- 만들기 버튼을 클릭합니다.
- 프로젝트를 선택합니다.
Google Health API 사용 설정
- 왼쪽 상단에서 메뉴 아이콘
을 클릭합니다. - API 및 서비스 > 라이브러리를 선택합니다.
- 'Google Health API'를 검색하여 사용 설정합니다.
OAuth 사용자 인증 정보 설정
Google Cloud 콘솔에 있지 않은 경우 Google Cloud 콘솔로 이동합니다.
- 왼쪽 상단에서 메뉴 아이콘
을 클릭합니다. - API 및 서비스 > 사용자 인증 정보를 선택합니다.
- 상단 중앙에서 + 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 선택합니다.
- 동의 화면 구성 버튼을 클릭합니다. 'Google 인증 플랫폼이 아직 구성되지 않음'이라는 메시지가 표시되면 시작하기 버튼을 클릭합니다.
- 섹션 1에서 다음을 수행합니다.
- 앱 이름을 입력합니다.
- 사용자 지원 이메일을 입력합니다.
- 다음 버튼을 클릭합니다.
- 섹션 2:
- External(외부)을 선택합니다.
- 다음 버튼을 클릭합니다.
- 섹션 3에서 다음을 수행합니다.
- 연락처 정보 필드에 이메일 주소를 입력합니다.
- 다음 버튼을 클릭합니다.
- 섹션 4에서 다음을 수행합니다.
- 체크박스를 클릭하여 Google의 API 서비스 사용자 데이터 정책에 동의합니다.
- 만들기 버튼을 클릭합니다.
- API 및 서비스 > 사용자 인증 정보로 이동하여 + 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 선택합니다.
- 애플리케이션 유형으로 웹 애플리케이션을 선택합니다.
- 클라이언트 ID 이름을 입력합니다.
- 승인된 JavaScript 원본은 비워 둡니다.
- 승인된 리디렉션 URI에서 + URI 추가를 클릭하고 다음 URI를 추가합니다.
https://www.google.comhttps://developers.google.com/oauthplayground
- 만들기 버튼을 클릭합니다.
- Google Console에 클라이언트 ID가 생성되었다는 메시지가 표시됩니다. JSON 다운로드 링크를 클릭하여 클라이언트 ID와 클라이언트 보안 비밀번호를 다운로드하거나 값을 적어 둡니다. 나중에 클라이언트의 보안 비밀을 복구할 수 없습니다.
- 확인을 클릭합니다. 'OAuth 2.0 클라이언트 ID' 페이지로 돌아갑니다.
- 클라이언트 ID가 프로젝트에 추가됩니다. 클라이언트 ID URL을 클릭하여 세부정보를 확인합니다.
테스트 사용자 추가
- 왼쪽 창에서 잠재고객을 선택합니다. '게시 상태'가 테스트로 설정되고 '사용자 유형'이 외부로 설정되어 있습니다.
- '테스트 사용자' 섹션에서 + 사용자 추가 버튼을 클릭합니다. 데이터를 가져오려는 사용자의 이메일 주소를 입력합니다.
- 저장 버튼을 클릭합니다.
클라이언트 ID에 범위 추가
- 왼쪽 창에서 데이터 액세스를 선택합니다.
- 범위 추가 또는 삭제 버튼을 클릭합니다.
- API 열에서 'Google Health API'를 검색합니다. 이 Codelab에서는
.../auth/googlehealth.activity_and_fitness.readonly범위를 사용합니다. - 범위를 선택한 후 업데이트 버튼을 눌러 데이터 액세스 페이지로 돌아갑니다.
- 저장 버튼을 클릭합니다.
클라이언트 ID 설정을 완료했습니다.
3. Fitbit 모바일 앱에 데이터 추가하기
Fitbit 신규 사용자의 경우 Fitbit 계정에 쿼리할 데이터가 없을 수 있습니다. 엔드포인트 중 하나를 통해 쿼리할 수 있는 운동 로그를 수동으로 추가할 것입니다. 운동을 수동으로 기록하려면 다음 단계를 따르세요.
- 기기에서 Fitbit 모바일 앱을 엽니다. 필요한 경우 Fitbit 계정에 로그인합니다.
- 화면 오른쪽 하단에서 + 버튼을 탭합니다.
- '수동으로 기록' 섹션에서 활동을 탭합니다.
- 운동 유형 걷기를 검색하여 선택합니다.
- 오늘의 시작 시간을 입력합니다.
- 기간을 15분으로 변경합니다.
- 거리를 1.0마일로 둡니다.
- 추가를 탭합니다.
- 화면을 길게 누른 다음 아래로 슬라이드하여 모바일 앱을 Fitbit 서버와 동기화합니다. 손가락을 떼면 모바일 앱이 동기화됩니다.
- '활동' 섹션에 수동으로 기록한 걷기 항목이 표시됩니다.

4. OAuth 2.0 Playground에서 승인
OAuth 2.0 Playground로 이동합니다.
Google Health API를 사용하려면 Playground에서 자체 OAuth 사용자 인증 정보를 사용해야 합니다.
- 오른쪽 상단에서 OAuth 2.0 구성 톱니바퀴 아이콘을 클릭합니다.
- 자체 OAuth 사용자 인증 정보 사용을 선택합니다.
- Google Cloud 프로젝트 설정 중에 획득한 OAuth 클라이언트 ID 및 OAuth 클라이언트 보안 비밀번호를 입력합니다.
Playground 인터페이스는 다음과 같은 세 가지 주요 단계로 나뉩니다.
- API 선택 및 승인
- 토큰의 승인 코드 교환
- API에 요청 보내기
API 선택 및 승인
여기에서 요청할 API 범위를 선택합니다.
- 1단계에서 API 목록에 있는 Google Health API v4를 찾아 펼칩니다.
https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly을 선택합니다. 필요한 범위가 목록에 표시되지 않으면 '자체 범위 입력' 필드에 직접 입력할 수 있습니다.- API 승인을 클릭합니다.
- Google의 OAuth 2.0 승인 엔드포인트로 요청이 전송되고, 선택한 범위가 요청에 포함된 후 Google 계정 동의 화면으로 리디렉션됩니다.
- Google Cloud 프로젝트 설정 섹션에서 구성한 테스트 사용자 계정으로 로그인합니다 (아직 로그인하지 않은 경우).
- 요청된 권한을 검토하고 계속을 클릭하여 액세스 권한을 부여합니다.
동의를 부여하면 Google에서 Playground로 다시 리디렉션하고 다음 단계에서 사용되는 승인 코드를 도구에 제공합니다.
오른쪽의 요청 / 응답 패널에는 전체 HTTP 리디렉션 흐름이 표시됩니다.
초기 승인 요청의 응답은 302 Found 리디렉션입니다.
HTTP/1.1 302 Found
Location: https://accounts.google.com/o/oauth2/v2/auth?redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&prompt=consent&response_type=code&client_id=your_client_id&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgooglehealth.activity_and_fitness.readonly&access_type=offline
결과적으로 Playground로 다시 리디렉션된 요청에는 승인 코드가 포함됩니다.
GET /oauthplayground/?iss=https://accounts.google.com&code=authorization_code&scope=https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly HTTP/1.1
Host: developers.google.com
승인 코드는 GET 요청 URL의 code=과 &scope 사이에 있는 authorization_code로 표시되는 영숫자 값입니다. 이 예시에서 값은 4/0AbPOj...와 비슷합니다.
토큰의 승인 코드 교환
이 단계에서는 API 요청을 할 수 있는 토큰으로 코드가 교환됩니다.
API 선택 및 승인을 완료하면 Playground에서 승인 코드 필드가 자동으로 채워집니다. 토큰으로 교환하려면 다음 단계를 따르세요.
- 2단계에서 승인 코드를 토큰으로 교환 버튼을 클릭합니다.
- access_token 및 refresh_token이 오른쪽의 Request/Response 패널에 표시됩니다.
다음과 비슷한 응답이 표시됩니다.
{
"access_token": "ya29.a0AFH6S....",
"refresh_token_expires_in": 604799,
"expires_in": 3599,
"token_type": "Bearer",
"scope": "https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly",
"refresh_token": "1/og..."
}
갱신 토큰 정보
승인 코드를 교환할 때 응답에 access_token 외에 refresh_token가 포함될 수 있습니다. access_token는 수명이 짧습니다 (일반적으로 1시간). access_token이 만료되면 사용자가 다시 로그인하거나 동의하지 않아도 되도록 refresh_token을 사용하여 새 access_token을 획득해야 합니다. 이는 승인 요청에 access_type=offline를 포함했기 때문에 가능합니다.
대답에 refresh_token가 표시되지 않으면 이 앱과 범위에 대해 이미 동의를 부여했기 때문일 수 있습니다. 갱신 토큰은 일반적으로 사용자가 앱에 처음 동의를 부여할 때 또는 후속 승인에서도 동의 화면이 표시되도록 승인 URL에 prompt=consent가 추가될 때만 발급됩니다.
refresh_token는 수명이 길지만 6개월 동안 사용하지 않거나 사용자가 앱에 대한 액세스 권한을 취소하거나 기타 이유로 만료되거나 무효화될 수 있습니다. 나중에 사용할 수 있도록 refresh_token를 안전하게 저장해야 합니다.
5. API에 요청 보내기
이제 액세스 토큰을 사용하여 Google Health API에 요청할 수 있습니다. Playground의 3단계에서 요청 URI, HTTP 메서드, 헤더, 요청 본문을 지정하여 HTTP 요청을 구성합니다.
- HTTP 메서드를 GET으로 설정합니다.
- 요청 URI를
https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints로 설정합니다. - 요청 보내기를 클릭합니다.
응답은 다음과 유사합니다.
{
"dataPoints": [
{
"name": "users/2515055256096816351/dataTypes/exercise/dataPoints/8896720705097069096",
"dataSource": {
"recordingMethod": "MANUAL",
"platform": "FITBIT"
},
"exercise": {
"interval": {
"startTime": "2026-02-23T13:10:00Z",
"startUtcOffset": "-18000s",
"endTime": "2026-02-23T13:25:00Z",
"endUtcOffset": "-18000s"
},
"exerciseType": "WALKING",
"metricsSummary": {
"caloriesKcal": 16,
"distanceMillimiters": 1609344,
"steps": "2038",
"averagePaceSecondsPerMeter": 0.55923407301360051,
"activeZoneMinutes": "0"
},
"exerciseMetadata": {},
"displayName": "Walk",
"activeDuration": "900s",
"exerciseEvents": [
{
"eventTime": "2026-02-23T13:10:00Z",
"eventUtcOffset": "-18000s",
"exerciseEventType": "START"
},
{
"eventTime": "2026-02-23T13:25:00Z",
"eventUtcOffset": "-18000s",
"exerciseEventType": "STOP"
}
],
"updateTime": "2026-02-24T01:19:22.450466Z"
}
},
{
"name": "users/2515055256096816351/dataTypes/exercise/dataPoints/5870930690409355408",
"dataSource": {
"recordingMethod": "MANUAL",
"platform": "FITBIT"
},
"exercise": {
"interval": {
"startTime": "2026-02-23T06:00:00Z",
"startUtcOffset": "-18000s",
"endTime": "2026-02-23T06:15:00Z",
"endUtcOffset": "-18000s"
},
"exerciseType": "WALKING",
"metricsSummary": {
"caloriesKcal": 17,
"distanceMillimiters": 1609344,
"steps": "2038",
"averagePaceSecondsPerMeter": 0.55923407301360051,
"averageHeartRateBeatsPerMinute": "81",
"activeZoneMinutes": "0",
"heartRateZoneDurations": {
"lightTime": "900s"
}
},
"exerciseMetadata": {},
"displayName": "Walk",
"activeDuration": "900s",
"exerciseEvents": [
{
"eventTime": "2026-02-23T06:00:00Z",
"eventUtcOffset": "-18000s",
"exerciseEventType": "START"
},
{
"eventTime": "2026-02-23T06:15:00Z",
"eventUtcOffset": "-18000s",
"exerciseEventType": "STOP"
}
],
"updateTime": "2026-02-23T08:29:39.480437Z"
}
}
],
"nextPageToken": ""
}
많은 엔드포인트가 필터링 또는 페이지로 나누기를 위한 쿼리 매개변수를 지원합니다. 예를 들어 특정 기간 내의 운동을 나열하려면 요청 URI를 변경하여 필터 매개변수를 포함합니다.
https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints?filter=exercise.interval.civil_start_time >= "2026-02-22T00:00:00"
요청 보내기를 다시 클릭하여 필터링된 결과를 확인합니다.
6. 축하합니다
축하합니다.
기본 Codelab을 완료하고 OAuth2 Playground를 사용하여 OAuth 2.0 승인을 테스트하고 Google Health API 엔드포인트를 호출하는 방법을 배웠습니다.
Google Health API 생태계와 통합되는 앱을 빌드하는 데 도움이 되기를 바랍니다. 자세한 내용은 참조 문서에서 다른 Google Health API 엔드포인트를 살펴보고 웹 서버 애플리케이션용 Google OAuth 2.0에 대해 자세히 알아보세요.