アプリケーションに OAuth を構成する

アプリケーションの OAuth を構成するには、OAuth ワークフローを設定し、Data Portability API OAuth スコープを有効にします。

OAuth ワークフローを設定する

アプリケーションの OAuth フローを設定するには、Google Identity のドキュメントの基本的な手順に沿って操作します。

ほとんどのデベロッパーは、OAuth の同意を得るためにサーバーサイド ウェブアプリのフローを使用しますが、JavaScript ウェブアプリのフローモバイルアプリとデスクトップ アプリのフローを使用することもできます。

エクスポートにはアクセス トークンの有効期間よりも時間がかかる場合があります。また、ユーザーが 30 日間または 180 日間のアクセス権を付与している場合もあります。更新トークンを取得し、定期的に新しいアクセス トークンと交換する必要があります。詳細については、ウェブアプリのアクセス トークンの更新モバイルアプリとパソコンアプリのアクセス トークンの更新をご覧ください。

重要: OAuth トークンの更新は、OAuth クライアントの公開ステータスが [製品版] で、[テスト] ではない場合のみ、ユーザーが利用できます。また、公開ステータスが [テスト] の OAuth クライアントに付与されたトークンは、30 日間または 180 日間の有効期間を選択した場合でも、常に 7 日で期限切れになります。詳しくは、OAuth 同意画面の設定をご覧ください。

Data Portability API の OAuth スコープ

OAuth 用に Data Portability API アプリケーションを構成する場合は、アプリケーションに関連する Data Portability API OAuth スコープを有効にします。スコープによっては sensitiverestricted があり、追加の要件が適用される場合があります。

Data Portability API スコープを OAuth フローに追加する場合、ユーザーがすべてのスコープではなく一部のスコープに同意する場合があります。アプリは、次の方法でこれらのケースに対処できる必要があります。

  • 一部のデータのエクスポートを許可する
  • 必要なスコープがすべて選択されていないことをユーザーに通知する(および正常に失敗する)
  • 残りの同意を求める

また、ユーザーは、データへのアクセスを 1 回のみ許可するか、30 日間または 180 日間許可するかを選択できます。

  • ユーザーが 1 回限りのアクセスを許可した場合、アプリはその特定の同意に基づいて1 回のデータ エクスポートを実行できます。データを再度ダウンロードするには、ユーザーから新たに同意を得る必要があります。
  • ユーザーが時間ベースのアクセスを許可した場合、アプリは指定された期間中、またはユーザーが同意を取り消すまで、データのエクスポートを実行できます。
  • リクエストに時間フィルタを適用して、過去 6 か月間など特定の期間のデータをエクスポートすることもできます。

また、OAuth フロー中、アプリは同意に使用された Google アカウントを認識しません。アプリが受け取る OAuth トークンは不透明です。

ユーザーがデータを共有する方法については、データのコピーをサードパーティと共有するをご覧ください。

スコープの制限

このセクションでは、エラーにつながるスコープの制限について説明します。

混合スコープ

Data Portability API スコープ(https://www.googleapis.com/auth/dataportability.* など)のリクエストは、他のスコープ(https://www.googleapis.com/auth/userinfo.email など)と組み合わせて使用できません。以下に、制限付きの部分が太字で示された不正なリクエストの例を示します。

https://accounts.google.com/o/oauth2/v2/auth?
client_id=client_id&
redirect_uri=redirect_uri&
response_type=token&
scope=https://www.googleapis.com/auth/dataportability.myactivity.search+https://www.googleapis.com/auth/userinfo.email&
include_granted_scopes=false

以前に付与されたスコープ

DPAPI スコープをリクエストするときに include_granted_scopes=true を設定しないでください。制限されている部分が太字になっている、無効なリクエストの例を次に示します。

https://accounts.google.com/o/oauth2/v2/auth?
client_id=client_id&
redirect_uri=redirect_uri&
response_type=token&
scope=https://www.googleapis.com/auth/dataportability.myactivity.search&
include_granted_scopes=true

スコープが多すぎます

リクエストに追加されたスコープが多すぎると、400 bad request エラーが発生することがあります。これは、URL の長さがブラウザでサポートされている長さを超えた場合に発生します。解決するには、スコープのリクエストを複数の小さなバッチに分割し、増分承認を使用して各バッチの同意をリクエストします。

スコープのカテゴリ

Data Portability API でサポートされているすべての OAuth スコープとそのカテゴリについては、使用可能な OAuth スコープをご覧ください。特定のサービスでサポートされているすべてのリソース グループと OAuth スコープの一覧については、そのサービスのスキーマ リファレンス ページをご覧ください。