如果您的指令碼使用 Google 服務,例如 Google 雲端硬碟、試算表和郵件,則需要取得認證。 有幾個取得認證的選項:
- 選項 1 - 易於遵循且花費較少的時間,但當存取權杖到期時,您需要每小時重複一次。
- 選項 2 - 稍微複雜一些,但只有在重新整理權杖無效時才需要重複。
- 選項 3 — 使用提供的 PowerShell 指令碼) (也稍微複雜一些,但您只需要在重新整理權杖無效時重複該步驟。
選項 1 - 從 Google OAuth Playground 取得存取權杖
- 移至 Google OAuth playground
- 在 [輸入您自己的範圍] 中,將 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- 選取 [ 授權 API]
- 授權 API 之後,選取 [交換權杖的授權碼]
- 複製回應中的access_token值
- 在存取 Google 服務的 「探索未核准廣告」之類的解決方案中,請將認證物件的
accessToken欄位設定為步驟 5 中複製的存取權杖。
注意事項
由於存取權杖會在 1 小時後到期,因此您必須每小時重複這些步驟一次。
選項 2 - 從 Google OAuth Playground 取得重新整理權杖
- 移至 Google 開發人員主控台 API 儀表板
- 選取 建立專案 以建立新專案或選取現有專案
- 如果建立新專案,請在 [專案名稱] 中輸入專案名稱。 例如,指令碼。
- 選取 [建立]
- 在 儀表板上,選取 [啟用 API 及服務]
- 在搜尋方塊中,輸入 [試算表] ,然後選取 [Google 試算表 API]。 接著選取 [ 啟用]
- 返回至儀表板 (選取 API & Services) ,然後針對 Google 雲端硬碟 API 重複步驟 3 和 4
- 返回至儀表板 (選取 API & Services) ,然後針對 Gmail API 重複步驟 3 和 4
- 在 儀表板上,選取左側瀏覽窗格中的 [認證 ],然後選取 [設定同意畫面]。 如果要求選取 [使用者類型],請選取 [ 外部],然後選取 [建立]
- 在 [ 應用程式名稱 ] 欄位中輸入應用程式的名稱 (例如, 指令碼用戶端) ,並在要求的欄位中輸入您的電子郵件,然後選取 [儲存並繼續]
- 選取 [新增或移除範圍],選取 .。/auth/drive 和 ../auth/gmail.send,然後選取 [ 更新]
- 選取 [儲存並繼續]
- 選取 [新增使用者],輸入您的 Google 電子郵件,然後選取 [新增]
- 在儀表板上,選取左側瀏覽窗格中的 [認證],然後選取 [建立認證],然後選取 [Oauth 用戶端識別碼]
- 選取 [Web 應用程式 應用程式類型]。 接下來,在 [名稱] 欄位中輸入名稱,例如 Scripts Web App。 然後,新增 https://developers.google.com/oauthplayground 到 授權的重新導向 URIs。 最後,選取 [ 建立]
- 複製要在步驟 18、19 和 24 中使用的用戶端識別碼和用戶端密碼,然後選取 [ 確定]
- 移至 Google OAuth playground
- 選取 OAuth 2.0 設定圖示 (在右上角看起來像齒輪)
- 核取 [使用您自己的 OAuth 認證] 方塊
- 將您的用戶端識別碼貼到 OAuth 用戶端識別碼
- 將您的用戶端密碼貼到 OAuth 用戶端密碼
- 在 [輸入您自己的範圍] 中,將 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- 選取 [ 授權 API], 然後依照提示提供同意
注意事項
在 Playground 中授權 API 時,如果您看到顯示「此應用程式尚未驗證」的對話方塊,請選取 [進 階 ],然後 移至 [應用程式名稱] (不安全的) 。
- 授權 API 之後,選取 [交換權杖的授權碼]
- 複製 重新整理權杖 ,以在步驟 24 中使用
- 在存取 Google 服務的「探索未核准廣告」之類的解決方案中,將認證物件的 、
clientSecret和refreshToken欄位clientId設定為您在步驟 13 和 22 中收到的值。
選項 3 - 使用 PowerShell 指令碼取得重新整理權杖
- 移至 Google 開發人員主控台 API 儀表板
- 選取 建立專案 以建立新專案或選取現有專案
- 如果建立新專案,請在 [專案名稱] 中輸入專案名稱。 例如,指令碼。
- 選取 [建立]
- 在 儀表板上,選取 [啟用 API 及服務]
- 在搜尋方塊中,輸入 [試算表] ,然後選取 [Google 試算表 API]。 接著選取 [ 啟用]
- 返回至儀表板 (選取 API & Services) ,然後針對 Google 雲端硬碟 API 重複步驟 3 和 4
- 返回至儀表板 (選取 API & Services) ,然後針對 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 執行命令 (<Windows button>+r) :
cmd.exe
在命令提示字元中,瀏覽至儲存 GetTokens.ps1 的資料夾,然後輸入下列命令:
powershell.exe -File .\GetTokens.ps1
當 PowerShell 指令碼成功執行時,它會啟動瀏覽器工作階段,您可以在其中輸入您的 Google 認證。 同意之後,網頁會包含授權代碼 (請參閱請複製此代碼...) 。
複製授與碼,然後在主控台視窗中的提示中輸入。 PowerShell 指令碼接著會傳回重新整理權杖。 複製重新整理權杖。 您應該像對待密碼一樣對待重新整理權杖;如果有人掌握了它,他們就可以存取您的資源。
- 在存取 Google 服務的 「探索未核准廣告」之類的解決方案中,將認證物件的
clientId、clientSecret和refreshToken欄位設定為您在步驟 13 和 14 中收到的值。