追加の権限のリクエスト

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

たとえば、アプリでユーザーが音楽プレイリストを 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 option = new gapi.auth2.SigninOptionsBuilder();
option.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}));
    });