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. 「どこからお電話ですか?」と尋ねられたら、[Web Server](ウェブサーバー)を選択します。
  3. [Authorized redirect URIs] の値として 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 APIs プロジェクトに付与されている場合でも、アプリがアクセスのスコープの承認をリクエストするたびに同意画面が表示されます。

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 Identity Platform のドキュメントをご覧ください。

更新トークンをアクセス トークンと交換するには、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 日間のトークンの有効期限切れを避けるため、アプリケーションが本番環境に移行される前に公開してください。