我在我的 Chrome 应用程序中使用 OAuth 和 Chrome Identity 与电子表格 (Google Spreadsheet API) 进行通信。问题是,工作表需要公开和/或与开发者帐户共享才能工作(出于某些原因)。我假设这是因为开发者帐户拥有 Google Cloud Platform 项目,该项目拥有 Chrome 应用程序使用的服务帐户。
所以我的问题是,我们如何让 Chrome 改用已登录的 Google 帐户凭据?因此,如果 A 拥有工作表的所有权,那么 A 应该能够使用应用程序访问工作表,而无需与开发人员共享工作表。
因此,只要开发者帐户是工作表的编辑者,下面的代码就可以工作。我如何更改它以改为使用用户帐户?
chrome.identity.getAuthToken({ 'interactive': true }, function(token) {
var spreadsheetId = "SHEET_ID";
var sheetId = "0";
var range = "Sheet1!A1";
var respString;
var apiURL = "https://sheets.googleapis.com/v4/spreadsheets/" + spreadsheetId + "/values/" + range;
var objectHTTP;
objectHTTP = new XMLHttpRequest();
objectHTTP.onreadystatechange = function() {
if (objectHTTP.readyState == 4 && objectHTTP.status == 200) {
respString = objectHTTP.responseText;
}
respString = objectHTTP.responseText;
};
objectHTTP.open("GET", apiURL, false);
objectHTTP.setRequestHeader('Authorization', 'Bearer ' + token);
objectHTTP.send();
console.log(respString);
});
即使我以私有(private)工作表的所有者身份登录,代码(objectHTTP.send 部分)也会失败并显示 403。
哦,有趣的是,当我使用 getAuthToken 方法时,我没有得到同意屏幕。
最佳答案
Chrome Identity 似乎使用 Chrome 浏览器的身份...而不是您登录的“Google 帐户”。因此,如果您的 Chrome 浏览器用户是 A,但您使用 B 帐户登录,它显然仍然认为您是 A。
关于javascript - 如何通过 Chrome Identity 使用登录帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49145410/