如果您的腳本使用Google雲端硬碟、工作表和郵件等Google服務,您需要取得認證。 有幾個選項可用來取得認證:
- 選項 1 - 易於追蹤且花費較少的時間,但您需要在存取令牌到期時每小時重複一次。
- 選項 2 - 稍微複雜一點,但您只需要在重新整理令牌無效時重複。
- 選項 3 - 此外, (使用提供的 PowerShell 腳本) ,但您只需要在重新整理令牌變成無效時重複它。
選項 1 - 從 Google OAuth 遊樂場取得存取令牌
- 移至 Google OAuth遊樂場
- 在 [輸入您自己的範圍] 中,貼上 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- 選 取 [授權 API]
- 授權 API 之後,選取 令牌的 Exchange 授權碼
- 從回應複製access_token的值
- 在探索存取 Google 服務 的未經核准廣告等解決方案中,將認證物件的欄位設定為步驟 5 中複製的
accessToken
存取權杖。
注意事項
因為存取令牌會在 1 小時內到期,所以您必須每小時重複這些步驟。
選項 2 - 從 Google OAuth 遊樂場取得重新整理令牌
- 移至Google開發人員控制台 API 儀錶板
- 選 取 [建立專案 ] 以建立新專案,或選取現有的專案
- 如果建立新專案,請在 [項目名稱] 中輸入項目的 名稱。 例如,腳本。
- 選取 [建立]
- 在 儀錶板上,選 取 [啟用 API 和服務]
- 在搜尋方塊中,輸入 工作表 ,然後選取 [Google Sheets API]。 然後,選取 [ 啟用]
- 返回 至儀錶板 (選取 [服務) & API],然後針對Google雲端硬碟 API 重複步驟 3 和 4
- 返回 至儀錶板 (選取 & Services) 的 API,然後針對 Gmail API 重複步驟 3 和 4
- 在 [儀錶板] 上,選取左側瀏覽窗格中的 [ 認證 ],然後選 取 [設定同意畫面]。 如果要求選取 使用者類型,請選取 [外部],然後選取 [ 建立]
- 在 [應用程式名稱] 欄位中輸入您的應用程式 名稱 (例如, 腳本客戶 端) ,然後在要求的欄位中輸入您的電子郵件,然後選取 [儲存 後繼續]
- 選 取 [新增或移除範圍],選取 []。/auth/drive 和 ../auth/gmail.send,然後選取 [更新]
- 選取 [儲存後繼續]
- 選取 [新增使用者],輸入您的 Google 電子郵件,然後選取 [新增]
- 在 [儀錶板] 上,選取左側瀏覽窗格中的 [ 認證 ],然後選取 [ 建立認證 ],然後選取 [Oauth 用戶端標識符]
- 選 取 [Web 應用程式 應用程式類型]。 接下來,在 [名稱] 欄位中輸入如文稿 Web 應用程式的名稱。 然後,將 新 https://developers.google.com/oauthplayground 增至 [授權的重新導向 URI]。 最後,選取 [ 建立]
- 複製您的用戶端識別碼和客戶端密碼以在步驟 18、19 和 24 中使用,然後選取 [確定]
- 移至 Google OAuth遊樂場
- 選取 OAuth 2.0 組態圖示 (看起來像右上角的齒輪)
- 核取 [ 使用您自己的 OAuth 認證 ] 方塊
- 將您的用戶端識別碼貼到 OAuth 用戶端識別碼
- 將您的客戶端密碼貼到 OAuth 客戶端密碼
- 在 [輸入您自己的範圍] 中,貼上 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- 選 取 [授權 API] ,並遵循提示以提供同意
注意事項
在遊樂場中授權 API 時,如果您看到對話框顯示「此應用程式未驗證」,請選取 [ 進 階],然後移 至 [應用程式名稱], (不安全) 。
- 授權 API 之後,選取 令牌的 Exchange 授權碼
- 從重新 整理令牌 複製令牌以在步驟 24 中使用
- 在探索 未經核准的廣告等解決方案中,存取Google服務,將認證物件的
clientId
、clientSecret
和refreshToken
欄位設定為您在步驟 13 和 22 中收到的值。
選項 3 - 使用 PowerShell 腳本取得重新整理令牌
- 移至Google開發人員控制台 API 儀錶板
- 選 取 [建立專案 ] 以建立新專案,或選取現有的專案
- 如果建立新專案,請在 [項目名稱] 中輸入項目的 名稱。 例如,腳本。
- 選取 [建立]
- 在 儀錶板上,選 取 [啟用 API 和服務]
- 在搜尋方塊中,輸入 工作表 ,然後選取 [Google Sheets API]。 然後,選取 [ 啟用]
- 返回 至儀錶板 (選取 [服務) & API],然後針對Google雲端硬碟 API 重複步驟 3 和 4
- 返回 至儀錶板 (選取 & Services) 的 API,然後針對 Gmail API 重複步驟 3 和 4
- 在 [儀錶板] 上,選取左側瀏覽窗格中的 [ 認證 ],然後選 取 [設定同意畫面]。 如果要求選取 使用者類型,請選取 [外部],然後選取 [ 建立]
- 在 [應用程式名稱] 欄位中輸入您的應用程式 名稱 (例如, 腳本客戶 端) ,然後在要求的欄位中輸入您的電子郵件,然後選取 [儲存 後繼續]
- 選 取 [新增或移除範圍],選取 []。/auth/drive 和 ../auth/gmail.send,然後選取 [更新]
- 選取 [儲存後繼續]
- 選取 [新增使用者],輸入您的 Google 電子郵件,然後選取 [新增]
- 在 [儀錶板] 上,選取左側瀏覽窗格中的 [ 認證 ],然後選取 [ 建立認證 ],然後選取 [Oauth 用戶端標識符]
- 選取 [傳統型應用程式應用程式 類型],輸入名稱 (例如, [腳本用戶端建立) ],然後選取 [ 建立]
- 複製您的用戶端識別碼和客戶端密碼以在步驟 15 和 16 中使用,然後選取 [確定]
- 建立 PowerShell 腳本以取得使用者同意和重新整理令牌。
除非您有重新整理令牌,否則取得存取令牌需要使用者同意。 但由於腳本不支援UI元件,因此您必須以其他方式取得同意。 此 PowerShell 提供取得同意和重新整理令牌的選項。
開啟記事本或您最愛的編輯器,並將PowerShell腳本複製到編輯器。 將和 $clientSecret
設定$clientId
為您在註冊應用程式時收到的用戶端識別碼和密碼 (請參閱步驟 13) 。
$clientId = "your-client-id"
$clientSecret = "your-client-secret"
$scopes = "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/gmail.send"
Start-Process "https://accounts.google.com/o/oauth2/v2/auth?client_id=$clientId&scope=$([string]::Join("%20", $scopes))&access_type=offline&response_type=code&redirect_uri=urn:ietf:wg:oauth:2.0:oob"
$code = Read-Host "Please enter the code"
$response = Invoke-WebRequest https://www.googleapis.com/oauth2/v4/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientid&client_secret=$clientSecret&redirect_uri=urn:ietf:wg:oauth:2.0:oob&code=$code&grant_type=authorization_code"
Write-Output "Refresh token: " ($response.Content | ConvertFrom-Json).refresh_token
儲存盤案並將它命名 GetTokens.ps1 (您可以為它命名任何您想要的專案,但擴展名必須 .ps1) 。
現在開啟主控台視窗。 若要在 Microsoft Windows 上開啟控制台視窗,請 (Windows 按鈕>+r) 輸入下列 Windows Run 命令<:
cmd.exe
在命令提示字元中,流覽至您儲存 GetTokens.ps1 的資料夾,然後輸入下列命令:
powershell.exe -File .\GetTokens.ps1
當 PowerShell 腳本成功執行時,它會啟動瀏覽器工作階段,您會在其中輸入 Google 認證。 同意之後,網頁會包含授與代碼 (請參閱複製此程式碼...) 。
複製授與碼,並在提示字元的控制台視窗中輸入它。 PowerShell 腳本接著會傳回重新整理令牌。 複製重新整理令牌。 您應該將重新整理令牌視為密碼;如果有人擁有它,他們就可以存取您的資源。
- 在探索 未經核准的廣告等解決方案中,存取Google服務,將認證物件的
clientId
、clientSecret
和refreshToken
欄位設定為您在步驟 13 和 14 中收到的值。