【问题标题】:Generate OAuth 2.0 Access Token For PUT Request In Google Sheets API In JavaScript在 JavaScript 中为 Google Sheets API 中的 PUT 请求生成 OAuth 2.0 访问令牌
【发布时间】:2017-12-08 00:49:49
【问题描述】:

目标

我想通过网络服务更新 Google 表格文档中的一些信息。我不介意数据是否公开,但似乎我需要获取 OAuth 令牌才能使用PUT https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}/values/{range},而不是简单地获取数据。但是,我收到错误消息,指出我缺少 OAuth 2.0 凭据。

期望

为了做到这一点,我假设我需要首先从 Google's Developer Console 获取凭据。我目前通过该控制台拥有一个 OAuth 2.0 客户端 ID 和 API 密钥。 API 密钥用于读取数据,OAuth 用于写入数据。

然后,我需要使用 OAuth 信息访问某种端点,以获取将要使用的凭据。我应该将此信息放入我的PUT 请求中。 This is the documentation I've found in regards to my request, but it's missing the authorization documentation.

问题

1) 我在 Google 的 OAuth 2.0 中获取刷新令牌和访问令牌的端点在哪里?我听说它类似于https://accounts.google.com/o/oauth2/token,但我不确定如何 获取令牌。我需要通过什么?我如何传递该信息?我找不到任何关于它的文档。

2) 获得这些令牌后,如何将它们合并到对 Google Sheets API 的 PUT 请求中?令牌是否进入Authorization 标头或access_token 查询参数或其他什么?

【问题讨论】:

    标签: javascript api oauth google-drive-api google-authentication


    【解决方案1】:

    我强烈建议首先检查 Javascript Quickstart 的 Sheets API,因为它包含 OAuth 登录演示。

    从快速入门代码中,这是调用 OAuth 库的部分:

     function handleClientLoad() {
            gapi.load('client:auth2', initClient);
     }
    

    这是我在我制作的应用中使用 PUT 请求:

    function recordTimeInSheet(){
    
         var params = {
           "range":"Sheet1!"+A+":"+C,
           "majorDimension": "ROWS",
           "values": [
           ["bruceWayne","8:00AM", "5:00PM"]
          ],
         }
         var xhr = new XMLHttpRequest();
         xhr.open('PUT', 'https://sheets.googleapis.com/v4/spreadsheets/'+myspreadsheetId+'/'+"values/"+"Sheet1!"+A+":"+C+"?"+'valueInputOption=USER_ENTERED');
         xhr.setRequestHeader('Authorization', 'Bearer ' + myAccessToken);
    
        xhr.send(JSON.stringify(params));
      }
    

    【讨论】:

    • 很抱歉没有明确说明,但我之前尝试过。我无法让它工作。回头看,我意识到它不起作用的原因是因为我在本地运行我的应用程序,gapi 不支持。有没有办法解决这个问题或使用gapi
    • 您只需要启动一个本地网络服务器即可使其工作(这意味着您需要有互联网)。示例是 python -m SimpleHTTPServer 8080 。 .谷歌如何启动特定于您的操作系统的本地服务器,但这是一种方法。
    猜你喜欢
    • 1970-01-01
    • 2012-09-29
    • 2020-08-10
    • 2016-04-02
    • 2011-01-19
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 2020-08-18
    相关资源
    最近更新 更多