OAuth2 Playground を使用して最初の Google Health API 呼び出しを行う

1. はじめに

OAuth 2.0 Playground は、コードを記述せずに Google OAuth 2.0 フローをテストできるウェブベースのツールです。この Codelab では、Google Cloud プロジェクトを設定し、認証情報を取得し、OAuth 2.0 Playground で認可フローを開始して、Google Health API エンドポイントの 1 つに最初の呼び出しを行う方法について説明します。

学習内容

  • Google Cloud コンソールでクライアント ID を設定する方法。
  • OAuth 2.0 Playground を使用して、Google OAuth 2.0 認可フローを実行し、アクセス トークンと更新トークンを取得する方法。
  • OAuth 2.0 Playground を使用して Google Health API エンドポイントを呼び出す方法。

必要なもの

Fitbit モバイルアプリを設定する手順は次のとおりです。

  1. Apple App Store または Google Play ストアで Fitbit モバイルアプリを検索してダウンロードします。
  2. アプリアイコンを選択します。
  3. [Google でログイン] をクリックします。
  4. Google アカウントを選択し、[続行] ボタンを押します。

2. Google Cloud プロジェクトを設定する

Google Cloud コンソールを使用して、クライアント ID を作成し、Google Health API の使用を有効にします。

  1. Google Cloud コンソールにログインします。
  2. 新しいプロジェクトを作成する手順は次のとおりです。
    1. プロジェクト選択ツールで [プロジェクトを選択] をクリックします。
    2. 右上にある [新しいプロジェクト] を選択します。
    3. プロジェクト名 を入力します。
    4. ロケーション を入力します(例: 「組織なし」)。
    5. [作成] ボタンをクリックします。
    6. プロジェクトを選択します。

Google Health API を有効にする

  1. 左上のメニュー アイコン メニュー をクリックします。
  2. [API とサービス] > [ライブラリ] を選択します。
  3. 「Google Health API」を検索して有効にします。

OAuth 認証情報を設定する

Google Cloud コンソールにログインしていない場合は、Google Cloud コンソールに移動します。

  1. 左上のメニュー アイコン メニュー をクリックします。
  2. [API とサービス] > [認証情報] を選択します。
  3. 中央上部で、[+ 認証情報を作成] > [OAuth クライアント ID] を選択します。
  4. [同意画面を構成] ボタンをクリックします。「Google Auth Platform はまだ構成されていません」というメッセージが表示されたら、[スタートガイド] ボタンをクリックします。
  5. セクション 1:
    1. [App name] を入力します。
    2. [User support email] を入力します。
    3. [次へ] ボタンをクリックします。
  6. セクション 2:
    1. [外部] を選択します。
    2. [次へ] ボタンをクリックします。
  7. セクション 3:
    1. [Contact Information] フィールドにメールアドレスを入力します。
    2. [次へ] ボタンをクリックします。
  8. セクション 4:
    1. チェックボックスをオンにして、Google の API サービス ユーザーデータに関するポリシー に同意します。
    2. [作成] ボタンをクリックします。
  9. [API とサービス] > [認証情報] に移動し、[+ 認証情報を作成] > [OAuth クライアント ID] を選択します。
  10. アプリケーションの種類として [ウェブ アプリケーション] を選択します。
  11. クライアント ID の名前 を入力します。
  12. [承認済みの JavaScript 生成元] は空のままにします。
  13. [承認済みのリダイレクト URI] で、[+ URI を追加] をクリックして次の URI を追加します:
    • https://www.google.com
    • https://developers.google.com/oauthplayground
  14. [作成] ボタンをクリックします。
  15. Google コンソールに、クライアント ID が作成されたことを示すメッセージが表示されます。[Download JSON] リンクをクリックしてクライアント ID とクライアント シークレットをダウンロードするか、値を書き留めます。後でクライアントのシークレットを復元することはできません。
  16. [OK] をクリックします。[OAuth 2.0 クライアント ID] ページに戻ります。
  17. クライアント ID がプロジェクトに追加されます。クライアント ID の URL をクリックすると、詳細が表示されます。

テストユーザーを追加する

  1. 左側のペインで [オーディエンス] を選択します。[公開ステータス] が [**テスト中**] に設定され、[ユーザーの種類] が [**外部**] に設定されていることを確認します。
  2. [テストユーザー] セクションで、[+ ユーザーを追加] ボタンをクリックします。データを取得するユーザーのメールアドレスを入力します。
  3. [保存] ボタンをクリックします。

クライアント ID にスコープを追加する

  1. 左側のペインで [データアクセス] を選択します。
  2. [スコープを追加または削除] ボタンをクリックします。
  3. [API] 列で「Google Health API」を検索します。この Codelab では、スコープ .../auth/googlehealth.activity_and_fitness.readonly を使用します。
  4. スコープを選択したら、[更新] ボタンを押して [データアクセス] ページに戻ります。
  5. [保存] ボタンをクリックします。

これでクライアント ID の設定が完了しました。

3. Fitbit モバイルアプリにデータを追加する

Fitbit を初めて使用する場合は、Fitbit アカウントにクエリを実行するデータがない可能性があります。エンドポイントの 1 つからクエリを実行できる運動ログを手動で追加します。運動を手動で記録する手順は次のとおりです。

  1. デバイスで Fitbit モバイルアプリを開きます。必要に応じて Fitbit アカウントにログインします。
  2. 画面の右下にある + ボタンをタップします。
  3. [手動で記録] セクションで [アクティビティ] をタップします。
  4. 運動の種類 [ウォーキング] を検索して選択します。
  5. 今日の開始時間 を入力します。
  6. 期間を 15 分 に変更します。
  7. 距離は 1.0 マイル のままにします。
  8. [追加] をタップします。
  9. 画面を長押しして下にスライドし、モバイルアプリを Fitbit サーバーと同期します。指を離すと、モバイルアプリが同期されます。
  10. [アクティビティ] セクションに、手動で記録したウォーキングのエントリが表示されます。ウォーキング アクティビティを示すスクリーンショット。

4. OAuth 2.0 Playground で認可する

OAuth 2.0 Playground に移動します。

Google Health API では、Playground で独自の OAuth 認証情報を使用する必要があります。

  1. 右上の OAuth 2.0 Configuration 歯車アイコンをクリックします。
  2. [Use your own OAuth credentials] をオンにします。
  3. Google Cloud プロジェクトの設定時に取得した OAuth クライアント IDOAuth クライアント シークレット を入力します。

Playground インターフェースは、次の 3 つの主なステップに分かれています。

  1. API を選択して認可する
  2. 認証コードをトークンと交換する
  3. API にリクエストを送信する

API を選択して認可する

ここでは、リクエストする API スコープを選択します。

  1. [Step 1] で、API のリストから [Google Health API v4] を見つけて展開します。
  2. https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly を選択します。必要なスコープがリストに表示されない場合は、[Input your own scopes] フィールドに手動で入力できます。
  3. [Authorize APIs] をクリックします。
  4. リクエストが Google の OAuth 2.0 認可エンドポイントに送信され、選択したスコープがリクエストに含まれ、Google アカウントの同意画面にリダイレクトされます。
  5. [Google Cloud プロジェクトを設定する] セクションで設定したテストユーザー アカウントでログインします(まだログインしていない場合)。
  6. リクエストされた権限を確認し、[続行] をクリックしてアクセス権を付与します。

同意すると、Google は Playground にリダイレクトし、次のステップで使用される認証コード をツールに提供します。

右側の [Request / Response] パネルに、完全な 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 によって認証コード フィールドに自動的に入力されます。トークンと交換するには:

  1. ステップ 2 で [Exchange authorization code for tokens] ボタンをクリックします。
  2. 右側の [Request/Response] パネルに access_tokenrefresh_token が表示されます。

次のようなレスポンスが表示されます。

{
  "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 を受け取らない場合は、このアプリとスコープに対する同意をすでに付与している可能性があります。通常、更新トークンは、ユーザーがアプリに初めて同意した場合、または後続の認可でも同意画面を強制的に表示するために prompt=consent が認可 URL に追加された場合にのみ発行されます。

refresh_token の有効期間は長いですが、6 か月間使用しない場合、ユーザーがアプリへのアクセスを取り消した場合、またはその他の理由で有効期限が切れたり、無効になったりすることがあります。refresh_token は、後で使用できるように安全に保管する必要があります。

5. API にリクエストを送信する

アクセス トークンを使用して、Google Health API にリクエストを送信できるようになりました。Playground のステップ 3 で、Request URIHTTP Method 、ヘッダー、リクエスト ボディを指定して HTTP リクエストを構成します。

  1. [HTTP Method] を [GET] に設定します。
  2. [リクエスト URI] を https://health.googleapis.com/v4/users/me/dataTypes/exercise/dataPoints に設定します。
  3. [Send the request] をクリックします。

レスポンスは次のようになります。

{
  "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"

もう一度 [Send the request] をクリックすると、フィルタされた結果が表示されます。

6. 完了

お疲れさまでした

基本的な Codelab を完了し、OAuth2 Playground を使用して OAuth 2.0 認可をテストし、Google Health API エンドポイントを呼び出す方法を学習しました。

Google Health API エコシステムと統合するアプリの構築をお楽しみください。詳細については、リファレンス ドキュメントで他の Google Health API エンドポイントを確認し、ウェブサーバー アプリケーション向けの Google OAuth 2.0 についてご確認ください。