如何使用Chrome身份登录帐户

时间:2018-03-07 06:20:30

标签: javascript google-chrome google-chrome-extension google-chrome-app google-sheets-api

我在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方法时,我没有收到同意屏幕。

1 个答案:

答案 0 :(得分:2)

Chrome身份识别系统使用Chrome浏览器的标识......不是您登录的" Google帐户"。因此,如果您的Chrome浏览器用户是A但您使用B帐户登录,则显然仍然认为您是A。