簡體   English   中英

如何在沒有 oAuth 同意屏幕的情況下使用 Google 表格 API 寫入工作表

[英]How to write to a sheet with Google Sheets API without oAuth consent screen

我正在 PHP 中編寫一個腳本,以自動化從數據庫中獲取數據並將其插入谷歌表格的過程。 由於它將以 15 分鍾的間隔運行,並且 Oauth 同意屏幕並不是最好的選擇。 是否有另一種選擇來獲得必要的授權來寫入工作表而無需通過瀏覽器登錄?

我在文檔和在線看到的大多數示例都使用同意屏幕。 如果我試試這個:

$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"   } }

錯誤消息中的鏈接只是引導您完成同意屏幕。 從我在網上可以找到的內容來看,如果我只讀取一個文件不會有問題,但是寫入它,即使我將工作表設置為公開,也需要身份驗證。

注意:這一切都在 Gcloud VM 實例中運行

您可以使用服務帳戶,然后與該服務帳戶共享工作表。

  1. Go 到 console.cloud.google.com 並使用包含工作表的帳戶登錄
  2. 添加 Google 表格 API(轉到 API 和服務,查找 Google 表格 API,添加它)
  3. Go 返回 API 和服務並單擊憑據
  4. 單擊創建憑據-> 服務帳戶

憑證圖片

  1. 填寫所需的東西(主要是服務帳戶名稱,並賦予其所有者角色)並按完成
  2. 單擊您剛剛創建的服務帳戶
  3. Go 到密鑰選項卡 -> 添加密鑰 -> 創建新密鑰 -> JSON

鍵選項卡

這應該給你一個使用的鑰匙。 這是您的 client_secret.json。 利用

$client->setAuthConfig('./client_secret.json')$client->setAuthConfigFile('./client_secret.json')

取決於您使用的 php google api 客戶端的版本。

此外,請確保使用

$client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
  1. 與創建的服務帳戶共享驅動器中的工作表並授予其編輯權限

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM