5

我有一個擴展,首先要求訪問Google雲端硬盤文件的權限。擴展名是除了在彈出幾乎是空的我加載此JS:刪除擴展的權限

chrome.identity.getAuthToken({ 'interactive': true }, function(token) { 
    // Use the token. 
    console.log('Request Token') 
    console.log(token) 
    chrome.identity.removeCachedAuthToken(
       { 'token': token }, function() {}) 
    console.log('Removed token') 
}); 

在我的清單我有有效的密鑰,OAuth2用戶端編號,並 "scopes":["https://www.googleapis.com/auth/drive"]除了用於Chrome擴展其他標準鍵。

它正常工作,它首先被要求獲得許可,然後記錄我的訪問令牌。但是,當我重新安裝擴展(刪除/修改/添加)它沒有要求我的權限,只是寫了相同的訪問令牌。我想再次詢問許可。我怎樣才能做到這一點?

回答

6

爲了刪除權限我得再添GET請求撤銷許可:

chrome.identity.getAuthToken({ 'interactive': true }, function(token) { 
    // Use the token. 
    if (token) { 
     // Make a request to revoke token 
     var xhr = new XMLHttpRequest(); 
     xhr.open('GET', 'https://accounts.google.com/o/oauth2/revoke?token=' + 
      token); 
     xhr.send(); 
    } 
    chrome.identity.removeCachedAuthToken(
       { 'token': token }, function() {}) 
}); 

這是卓有成效的,現在每次我打開彈出時間我有權限的提示。

還有一個問題,雖然:當我准許我得到

XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/revoke?token=... 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'chrome-extension://acfnd...' is therefore not allowed access. 

這我不知道是什麼意思。

0

一旦您授予權限,當然不會再提示您。您需要進入Google帳戶頁面並撤消權限。

+0

是的,這是最好的方法,因爲它像其他的oauth流一樣。但答案缺乏更好的細節和鏈接。 –

6

在開發過程中,您可以去chrome://identity-internals撤銷特定的令牌。下次您授權該用戶時,權限對話框將再次顯示。記錄在User Authentication: Caching