在Google表格中为PUT请求生成OAuth 2.0访问令牌JavaScript

时间:2017-12-08 00:49:49

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

目标

我想通过网络服务更新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表格API的PUT请求中?令牌是否会进入Authorization标题或access_token查询参数或其他内容?

1 个答案:

答案 0 :(得分:0)

我强烈建议您首先检查Sheets API的Javascript Quickstart,因为它包含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));
  }