Chrome.identity.getAuthToken未显示Google用户列表

时间:2017-12-03 08:38:16

标签: google-chrome-extension oauth-2.0 identity

content.js 这是Chrome扩展程序的内容页面

document.getElementById("signIn").addEventListener("click", function(){
 chrome.runtime.sendMessage({task:"switchUser", user: current_user},function(response){                     
    });
});

background.js 这是Chrome扩展程序的背景页

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse){
   if(request.task == "switchUser"){
    function getToken(){
       chrome.identity.getAuthToken({ interactive: true }, function(token) { 
        sendResponse(token);
      });
    }
      chrome.identity.removeCachedAuthToken({ token: 
       currentSessionAccessToken }, getToken);
    }
  return true;
});

以前的OAuth令牌已成功删除,但在使用getAuthToken生成新的令牌时,不会显示用户选择列表。但是,我已将interactive设置为true。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您需要先撤消令牌,然后从缓存中删除。请在 background.js 页面找到以下代码。

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse){
if(request.task == "switchUser"){
function getToken(){
    chrome.identity.getAuthToken({ interactive: true }, function(token) { 
         sendResponse(token);
       });
     }
       var xmlHttp = new XMLHttpRequest();
       xmlHttp.open('GET', 'https://accounts.google.com/o/oauth2/revoke?token=' + currentSessionAccessToken); //revoke the token calling this url.
       xmlHttp.onload = function() { 
       chrome.identity.removeCachedAuthToken({ token: currentSessionAccessToken }, getToken); //after token is revoked, remove it from cache as well.
     }
       xmlHttp.onerror = function(){             
      };
      xmlHttp.send();
    }
   return true;
 });