要求其他權限

要求使用者權限存取使用者資料或其他資源時,您可以在初始要求或要求範圍中使用漸進式授權,直接要求所有範圍。使用漸進式授權功能,應用程式一開始只會要求啟動應用程式所需的範圍,接著需要新權限,並要求其他範圍,以向使用者說明要求的原因。

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