javascript - 如何通过 Chrome Identity 使用登录帐户

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

我在我的 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/

相关文章:

javascript - 如何为每个 URL 显示不同的页面操作图标

javascript - 使用 fetch 时如何选择退出 HTTP/2 服务器推送?

javascript - 如何让 .scan() 仅聚合未完成序列中最近发出的数组

ruby - 存储在 s3 上的文件未在浏览器中呈现

android - 在 android 的 Google Chrome 中,如何设置 unsafely-treat-insecure-origin-as-secure

javascript - 全局 JavaScript 异常处理程序(在 Chrome 中)

javascript - 异步加载的外部脚本,除非它被显式打开

javascript - Mousemove 事件未在页面元素或文档上触发

javascript - Google map 标记簇总和值

javascript - "Array.from() does not create an intermediate array"是什么意思?