向使用者要求存取使用者資料或其他內容的權限時 您可以在初始要求中預先要求所有範圍,或者 透過漸進式授權要求範圍。 使用漸進式授權時,應用程式一開始只會要求啟動應用程式所需的範圍,然後在向使用者提出要求的原因說明中,要求額外的範圍,以便取得新權限。
舉例來說,假設您的應用程式允許使用者儲存音樂播放清單 到 Google 雲端硬碟;應用程式可在使用者登入時要求基本使用者資訊 之後,當使用者準備好儲存第一個播放清單時 只要求 Google 雲端硬碟權限。
如果您懷疑使用者因您的 同意畫面讓使用者感到不堪負荷,或不清楚為何問自己 授予特定權限 以下是適用於網頁的操作說明,這些說明源自於新增用戶端登入按鈕的操作說明:「建構 Google 2.0 登入按鈕」。如要進一步瞭解網頁的漸進式授權,請參閱 OAuth 2.0 說明文件。
要求其他範圍
應用程式會在登入時要求「base」包括登入範圍
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}));
});