ユーザーデータにアクセスするためにユーザー権限をリクエストするとき、 すべてのスコープを最初のリクエストで事前にリクエストするか、 段階的な承認を使用して、必要な場合にのみスコープをリクエストします。 段階的承認を使用すると、最初はスコープのみをリクエストし、 新しい権限として追加のスコープをリクエストする リクエストの理由を特定するコンテキストで、 できます。
たとえば、ユーザーが音楽のプレイリストを保存できるアプリについて考えてみましょう。 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}));
});