要求其他權限

向使用者要求存取使用者資料或其他資源的權限時,您可以使用漸進式授權,在初始要求中預先要求所有範圍或要求範圍。使用漸進式授權時,應用程式一開始只會要求啟動應用程式所需的範圍,之後需要新權限時,在向使用者說明要求原因的情況下要求其他範圍。

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