要求其他權限

向使用者要求存取使用者資料或其他資源時,您可以在初始要求中預先要求所有範圍,或僅視需要使用增量授權要求所有範圍。使用漸進式授權後,應用程式一開始只會要求啟動應用程式所需的範圍,接著在需要新權限的情況下,以可識別向使用者要求原因的情境要求額外權限。

舉例來說,假設應用程式允許使用者將音樂播放清單儲存至 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}));
    });