要求額外權限

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

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