【发布时间】:2019-01-04 14:16:06
【问题描述】:
我在使用 Powershell 脚本处理 Google 电子表格时遇到问题。
我创建了一个 Google 表格,创建了一个 Google Cloud 项目,启用了表格和云端硬盘 API,创建了一个服务帐户,并将其添加到 Google 表格(共享)。
已安装谷歌云 SDK:
Install-Module GoogleCloud
gcloud init
gcloud auth activate-service-account --key-file .\Documents-eb5947bf353a.json
但请求值范围会引发“403(禁止)”错误:
$sheetidDocuments = "XXXXXXXXXXXXXXXXXXXXXXXXX"
$rangeDocuments = "Sheet1!XXX:XXX"
$requestUri = "https://sheets.googleapis.com/v4/spreadsheets/$sheetidDocuments/values/$rangeDocuments"
$result = Invoke-RestMethod -Uri $requestUri -Method Get -ContentType "application/json; charset=utf-8"
我不知道为什么。我花了几个小时试图修复它,但没有成功。这是服务帐户的工作方式,还是我必须为此使用带有访问令牌的 OAuth2?
我只想读/写工作表。
使用用户帐户而不是服务帐户的其他项目也可以正常工作。
【问题讨论】:
-
您如何将访问令牌应用于请求?禁止通常意味着您正在尝试访问需要身份验证的方法,而实际上没有经过身份验证。
-
嗯,这是我的问题的一部分——我是否也需要使用服务帐户处理访问令牌?我在想我在使用 Oauth2 而不是 json 密钥时只需要访问令牌。如果是这样的话,难怪事情不工作;)
-
您将始终需要访问令牌来向 API 发出请求。因此,您将不得不弄清楚如何使用 powershell 进行服务帐户身份验证。如果您确实知道如何做到这一点,请回答您的问题,我很乐意看到代码。我从未见过有人能做到这一点。
标签: powershell google-api google-sheets-api service-accounts