Google Sheet Update Api:收到错误[请求缺少必需的身份验证凭据]

时间:2017-08-31 06:24:11

标签: api oauth google-sheets google-sheets-api

我在Postman中使用以下参数调用Google Sheet Update Request:

网址:https://sheets.googleapis.com/v4/spreadsheets/ SpreadSheetId /值/的 SHEETNAME !A1:D5 请求类型:PUT
标题:授权 - MyAccessToken
请求机构:

enter image description here

获得回应:
 enter image description here

注意:对于更新到电子表格,我按照以下步骤操作:

  1. 使用此link在Google Api控制台上创建应用程序,然后转到“凭据”部分。单击“创建凭据”,然后单击“OAuth客户端ID”,“将应用程序类型创建为Web应用程序现在离开限制部分。然后创建。现在应用程序已创建。

  2. OAuth同意屏幕标签中添加一些项目名称

  3. 现在,使用此link授权API。在右上角,打开“设置”图标。选择使用您自己的OAuth凭据为true。从Google Api控制台上的项目添加客户端ID和客户端密钥。在下拉列表中的Google Sheet Api v4下选择范围为 https://www.googleapis.com/auth/spreadsheets ,然后授权API。

  4. 如果获取 redirect_mismatch_uri 。然后将重定向URI复制到oathPlayground或prompt参数之前,并将其粘贴到Google Api控制台中项目限制部分下的授权重定向URI中。然后将生成访问令牌,

    1. 获取访问令牌。在我之前定义的请求中复制此访问令牌。
    2. 但是得到错误。我无法弄清楚问题。 在此先感谢..

1 个答案:

答案 0 :(得分:1)

由于您已有刷新令牌,因此可以使用刷新令牌检索访问令牌。作为示例,它显示了如何使用curl使用刷新令牌检索访问令牌的方法。刷新令牌检索的访问令牌具有到期时间。请确认一下。

您可以在此处查看详细信息。 https://developers.google.com/identity/protocols/OAuth2WebServer

卷曲命令:

curl -L \
  --data "refresh_token=### refresh token ###" \
  --data "client_id=### client id ###" \
  --data "client_secret=### client secret ###" \
  --data "grant_type=refresh_token" \
  https://www.googleapis.com/oauth2/v4/token

结果:

{
 "access_token": "### access token ###",
 "token_type": "Bearer",
 "expires_in": 3600
}

下面的curl命令用于检索访问令牌的信息。如果访问令牌的到期时间已结束,则响应为{"error_description": "Invalid Value"}。如果不是,您可以看到以下回复。

检索访问令牌的信息:

curl -L \
 --data "access_token=### access token ###" \
https://www.googleapis.com/oauth2/v2/tokeninfo

结果:

{
 "issued_to": "#####",
 "audience": "#####",
 "scope": "#####",
 "expires_in": 1234,
 "access_type": "offline"
}

EDIT1

此示例代码用于更新sheet1!A1:C2[["test1","test2","test3"],["test4","test5","test6"]]的范围。

示例代码:

curl -L -X PUT \
-H "Authorization: Bearer ### access token ###" \
-H "Content-Type: application/json" \
-d '{"values":[["test1","test2","test3"],["test4","test5","test6"]]}' \
"https://sheets.googleapis.com/v4/spreadsheets/### spreadsheet ID ###/values/sheet1%21a1%3ac2?valueInputOption=USER_ENTERED"

结果:

{
  "spreadsheetId": "### spreadsheet ID ###",
  "updatedRange": "sheet1!A1:C2",
  "updatedRows": 2,
  "updatedColumns": 3,
  "updatedCells": 6
}