如何在没有 oAuth 同意屏幕的情况下使用 Google 工作表 API 写入 sheet
How to write to a sheet with Google Sheets API without oAuth consent screen
我正在 PHP 中编写一个脚本来自动执行从数据库中获取数据并将其插入到 google sheet 中的过程。
因为它将以 15 分钟的间隔 运行 并且 Oauth 同意屏幕并不是真正的最佳选择。
是否有另一种选择无需通过浏览器登录即可获得写入 sheet 的必要授权?
我在文档和网上看到的大多数示例都使用同意屏幕。
如果我试试这个:
$client = new Google_Client();
$service = new Google_Service_Sheets($client);
可以与文本转语音一起使用 API 我明白了(自然):
> PHP Fatal error: Uncaught Google\Service\Exception: { "error": {
> "code": 401,
> "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid
> authentication credential. See
> https://developers.google.com/identity/sign-in/web/devconsole-project.",
> "errors": [
> {
> "message": "Login Required.",
> "domain": "global",
> "reason": "required",
> "location": "Authorization",
> "locationType": "header"
> }
> ],
> "status": "UNAUTHENTICATED" } }
错误消息中的 link 只是指导您完成同意屏幕。根据我在网上可以找到的内容,如果我只读取一个文件,那不会有问题,但是写入它,即使我将 sheet 设置为 public,也需要身份验证。
注意:这是 Gcloud VM 实例中的全部 运行
您可以使用服务帐户,然后与该服务帐户共享 sheet。
- 转到 console.cloud.google.com 并使用包含 sheet
的帐户登录
- 添加 Google 表格 API(转到 API 和服务,查找 Google 表格 API,添加它)
- 返回 APIs and Services 并点击 Credentials
- 单击创建凭据 -> 服务帐户
- 填写必填项(主要是服务帐户名称,并赋予其所有者角色)并按完成
- 点击您刚刚创建的服务帐户
- 转到密钥选项卡 -> 添加密钥 -> 创建新密钥 -> JSON
这应该会给你一个密钥来使用。这是你的client_secret.json。使用
$client->setAuthConfig('./client_secret.json')
或
$client->setAuthConfigFile('./client_secret.json')
取决于您使用的 php google api 客户端的版本。
此外,请确保使用
设置适当的范围
$client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
- 与创建的服务帐户共享您驱动器中的 sheet 并授予其编辑权限
我正在 PHP 中编写一个脚本来自动执行从数据库中获取数据并将其插入到 google sheet 中的过程。 因为它将以 15 分钟的间隔 运行 并且 Oauth 同意屏幕并不是真正的最佳选择。 是否有另一种选择无需通过浏览器登录即可获得写入 sheet 的必要授权?
我在文档和网上看到的大多数示例都使用同意屏幕。 如果我试试这个:
$client = new Google_Client();
$service = new Google_Service_Sheets($client);
可以与文本转语音一起使用 API 我明白了(自然):
> PHP Fatal error: Uncaught Google\Service\Exception: { "error": {
> "code": 401,
> "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid
> authentication credential. See
> https://developers.google.com/identity/sign-in/web/devconsole-project.",
> "errors": [
> {
> "message": "Login Required.",
> "domain": "global",
> "reason": "required",
> "location": "Authorization",
> "locationType": "header"
> }
> ],
> "status": "UNAUTHENTICATED" } }
错误消息中的 link 只是指导您完成同意屏幕。根据我在网上可以找到的内容,如果我只读取一个文件,那不会有问题,但是写入它,即使我将 sheet 设置为 public,也需要身份验证。
注意:这是 Gcloud VM 实例中的全部 运行
您可以使用服务帐户,然后与该服务帐户共享 sheet。
- 转到 console.cloud.google.com 并使用包含 sheet 的帐户登录
- 添加 Google 表格 API(转到 API 和服务,查找 Google 表格 API,添加它)
- 返回 APIs and Services 并点击 Credentials
- 单击创建凭据 -> 服务帐户
- 填写必填项(主要是服务帐户名称,并赋予其所有者角色)并按完成
- 点击您刚刚创建的服务帐户
- 转到密钥选项卡 -> 添加密钥 -> 创建新密钥 -> JSON
这应该会给你一个密钥来使用。这是你的client_secret.json。使用
$client->setAuthConfig('./client_secret.json')
或
$client->setAuthConfigFile('./client_secret.json')
取决于您使用的 php google api 客户端的版本。
此外,请确保使用
设置适当的范围$client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
- 与创建的服务帐户共享您驱动器中的 sheet 并授予其编辑权限