追加の権限のリクエスト

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

たとえば、アプリでユーザーが音楽プレイリストを 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}));
    });