我遇到了同样的问题,解决方法是手动设置 OAuth2 令牌:
gapi.auth.setToken({access_token: oauthToken});
对于上下文,这是我的 background.js 中的身份验证和初始化流程:
var oauthToken;
chrome.identity.getAuthToken(
{
'interactive': true,
'scopes': <scopes>,
},
function(token) {
oauthToken = token;
// load Google client APIs
window.gapi_onload = authGapi;
var request = new XMLHttpRequest();
request.onreadystatechange = function() {
if ((request.readyState !== 4) || (request.status !== 200)) {
return;
}
eval(request.responseText);
};
request.open('GET', 'https://apis.google.com/js/client.js');
request.send();
}
);
var authGapi = function() {
gapi.auth.authorize({
immediate: true,
client_id: <clientId>,
scope: <scopes>,
},
function(response) {
gapi.client.init({
discoveryDocs: [
'https://sheets.googleapis.com/$discovery/rest?version=v4',
]
}).then(function() {
gapi.auth.setToken({access_token: oauthToken});
});
});
}