我在Chrome应用中使用OAuth和Chrome Identity与电子表格(Google电子表格API)进行通信。问题是,工作表需要公开和/或与开发人员帐户共享才能工作(出于某些原因)。我假设它是因为开发者帐户拥有Google云平台项目,该项目拥有Chrome应用程序使用的服务帐户。
所以我的问题是,我们如何要求Chrome使用已登录的Google帐户凭据?因此,如果A拥有工作表的所有权,那么A应该能够使用应用程序访问工作表而无需与开发人员共享工作表。
所以下面的代码是WORKS,只要开发者帐户是工作表的编辑器。如何更改它以便使用用户帐户?
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);
});
即使我以私人工作表的所有者身份登录,代码(objectHTTP.send部分)也会失败,并显示403。
哦,有趣的是,当我使用getAuthToken方法时,我没有收到同意屏幕。
答案 0 :(得分:2)
Chrome身份识别系统使用Chrome浏览器的标识......不是您登录的" Google帐户"。因此,如果您的Chrome浏览器用户是A但您使用B帐户登录,则显然仍然认为您是A。