5

Ho un'estensione che richiede innanzitutto le autorizzazioni per accedere ai file di Google Drive. L'estensione è quasi vuoto, tranne nel popup ho caricare questo js:Rimozione delle autorizzazioni delle estensioni

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') 
}); 

Nel mio manifesto ho chiave valida, OAuth2 ID client, e "scopes":["https://www.googleapis.com/auth/drive"] oltre ad altri tasti standard per l'estensione Chrome.

Funziona correttamente, è richiesta inizialmente l'autorizzazione e quindi ha registrato il mio token di accesso. Tuttavia, quando ho reinstallato l'estensione (cancellato/modificato/aggiunto) non mi ha chiesto il permesso e ho appena scritto lo stesso token di accesso. E voglio chiedere di nuovo il permesso. Come posso fare questo?

risposta

6

Al fine di rimuovere le autorizzazioni devo aggiungere un'altra richiesta GET a revocare il permesso:

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() {}) 
}); 

che fa il trucco e ora ogni volta che apro a finestra ho una richiesta di autorizzazione.

C'è un altro problema però: quando mi concedo il permesso ricevo

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. 

che io non so cosa significa.

0

Una volta concessa l'autorizzazione, ovviamente non verrà richiesto di nuovo. Dovrai accedere alla pagina del tuo account Google e revocare l'autorizzazione.

+0

sì, questo è il metodo migliore perché è simile ad altri flussi oauth. ma alla risposta mancano dettagli e collegamenti migliori. –

6

Durante lo sviluppo è possibile passare a chrome://identity-internals per revocare i token specifici. La prossima volta che autorizzi quell'utente verrà nuovamente visualizzata la finestra di dialogo delle autorizzazioni. Documentato su User Authentication: Caching.