追加の権限のリクエスト

ユーザーデータやその他のリソースにアクセスするユーザー権限をリクエストする場合、最初のリクエストですべてのスコープを事前にリクエストするか、必要な場合にのみスコープをリクエストできます。増分認可を使用します。段階的な承認を使用すると、アプリは最初にアプリを起動するために必要なスコープのみをリクエストし、次にリクエストの理由を特定するコンテキスト内で、新しい権限が必要になったときに追加のスコープをリクエストします。

たとえば、ユーザーが音楽のプレイリストを Google ドライブに保存できるようにする場合、アプリはログイン時に基本的なユーザー情報を要求でき、その後、ユーザーが最初のプレイリストを保存する準備ができたら、Google ドライブの権限のみを要求するとします。

同意画面が大きすぎるためにユーザーがログインしていない可能性がある場合や、特定の権限を要求される理由がよくわからない場合は、この方法を使用します。次の手順はウェブ用であり、クライアントサイドのログインボタンを追加する手順(Google 2.0 ログインボタンを作成する)から導かれたものです。ウェブの段階的承認について詳しくは、OAuth 2.0 ドキュメントをご覧ください。

スコープの追加リクエスト

ログイン時に、アプリは「基本」スコープをリクエストします。ログイン スコープ profile と、アプリの動作に必要な他の初期スコープで構成されます。その後、ユーザーが追加のスコープを必要とするアクションを実行しようとしたときに、アプリは追加のスコープをリクエストし、ユーザーは同意画面の新しいスコープのみを承認します。

ステップ 1: 基本スコープをリクエストする

Google ログインを初期化するときに、基本スコープ profile をリクエストします。この手順は Google 2.0 ログインボタンの作成に含まれています。

auth2 = gapi.auth2.init({
    client_id: 'CLIENT_ID.apps.googleusercontent.com',
    cookiepolicy: 'single_host_origin', /** Default value **/
    scope: 'profile' });                /** Base scope **/

ステップ 2: 追加のスコープをリクエストする

追加のスコープが必要な場合は、追加するスコープを使用してオプション ビルダーを作成し、user.grant({scope: [OPTIONS BUILDER]}).then(successFunction, failFunction); を呼び出して、スコープを追加します。

const options = new gapi.auth2.SigninOptionsBuilder();
options.setScope('email https://www.googleapis.com/auth/drive');

googleUser = auth2.currentUser.get();
googleUser.grant(options).then(
    function(success){
      console.log(JSON.stringify({message: "success", value: success}));
    },
    function(fail){
      alert(JSON.stringify({message: "fail", value: fail}));
    });