如果脚本使用 Google 服务(如 Google Drive、表格和邮件),则需要获取凭据。 有几个选项可用于获取凭据:
- 选项 1 — 易于遵循,花费的时间更少,但当访问令牌过期时,您需要每小时重复一次。
- 选项 2 - 稍微复杂一些,但只有在刷新令牌无效时才需要重复此操作。
- 选项 3 - 使用提供的 PowerShell 脚本) (也稍微复杂一些,但只有在刷新令牌无效时才需要重复此操作。
选项 1 - 从 Google OAuth 操场获取访问令牌
- 转到 Google OAuth 操场
- 在 “输入自己的作用域”中,粘贴 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- 选择 “授权 API”
- 在对 API 进行授权后,选择 交换令牌的授权代码
- 从响应中复制access_token的值
- 在访问 Google 服务 的“发现未经批准的广告”等解决方案中,将凭据对象的
accessToken字段设置为在步骤 5 中复制的访问令牌。
注意
由于访问令牌将在 1 小时后过期,因此需要每小时重复这些步骤一次。
选项 2 - 从 Google OAuth 操场获取刷新令牌
- 转到 Google 开发者控制台 API 仪表板
- 选择“ 创建项目 ”以创建新项目或选择现有项目
- 如果创建新项目,请在 “项目名称”中输入项目名称。 例如,脚本。
- 选择“创建”
- 在仪表板上,选择“启用 API 和服务”
- 在搜索框中输入 工作表并 选择 Google 表格 API。 然后选择“启用”
- 返回到仪表板 (选择 API & Services) ,然后对 Google Drive API 重复步骤 3 和步骤 4
- 返回到仪表板 (选择 API & Services) ,然后对 Gmail API 重复步骤 3 和步骤 4
- 在 仪表板上,选择左侧导航窗格中的 “凭据 ”,然后选择“ 配置同意屏幕”。 如果要求选择用户类型,请选择“外部”,然后选择“创建”
- 在应用程序名称字段中输入应用程序的名称 (例如,脚本客户端) ,并在要求输入的字段中输入电子邮件,然后选择“保存并继续”
- 选择 ADD OR REMOVE SCOPES, SELECT ../auth/drive and ../auth/gmail.send,然后选择“更新”
- 选择 “保存并继续”
- 选择“添加用户”,输入你的 Google 电子邮件,然后选择“添加”
- 在仪表板上,选择左侧导航窗格中的“凭据”,然后选择“创建凭据”,然后选择“Oauth 客户端 ID”
- 选择 Web 应用程序 应用程序类型。 接下来,在“名称”字段中输入一个名称,例如脚本 Web 应用。 然后,添加到https://developers.google.com/oauthplayground授权重定向 URI。 最后,选择“创建”
- 复制要在步骤 18、19 和 24 中使用的客户端 ID 和客户端密码,然后选择“ 确定”
- 转到 Google OAuth 操场
- 选择 OAuth 2.0 配置图标 (右上角看起来像齿轮)
- 选中 “使用自己的 OAuth 凭据” 框
- 将客户端 ID 粘贴到 OAuth 客户端 ID
- 将客户端密码粘贴到 OAuth 客户端密码
- 在 “输入自己的作用域”中,粘贴 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- 选择 “授权 API” ,然后按照提示提供许可
注意
在操场中授权 API 时,如果看到显示“此应用未验证”的对话框,请选择“ 高级 ”,然后转到“ [应用名称]” (不安全的) 。
- 在对 API 进行授权后,选择 交换令牌的授权代码
- 从 “刷新令牌 ”复制要在步骤 24 中使用的令牌
- 在访问 Google 服务的“ 发现未经批准的广告”等解决方案中,将凭据对象的
clientId、clientSecret和refreshToken字段设置为您在步骤 13 和 22 中收到的值。
选项 3 - 使用 PowerShell 脚本获取刷新令牌
- 转到 Google 开发者控制台 API 仪表板
- 选择“ 创建项目 ”以创建新项目或选择现有项目
- 如果创建新项目,请在 “项目名称”中输入项目名称。 例如,脚本。
- 选择“创建”
- 在仪表板上,选择“启用 API 和服务”
- 在搜索框中输入 工作表并 选择 Google 表格 API。 然后选择“启用”
- 返回到仪表板 (选择 API & Services) ,然后对 Google Drive API 重复步骤 3 和步骤 4
- 返回到仪表板 (选择 API & Services) ,然后对 Gmail API 重复步骤 3 和步骤 4
- 在 仪表板上,选择左侧导航窗格中的 “凭据 ”,然后选择“ 配置同意屏幕”。 如果要求选择用户类型,请选择“外部”,然后选择“创建”
- 在应用程序名称字段中输入应用程序的名称 (例如,脚本客户端) ,并在要求输入的字段中输入电子邮件,然后选择“保存并继续”
- 选择 ADD OR REMOVE SCOPES, SELECT ../auth/drive and ../auth/gmail.send,然后选择“更新”
- 选择 “保存并继续”
- 选择“添加用户”,输入你的 Google 电子邮件,然后选择“添加”
- 在仪表板上,选择左侧导航窗格中的“凭据”,然后选择“创建凭据”,然后选择“Oauth 客户端 ID”
- 选择“桌面应用应用程序类型”,输入名称 (例如“脚本客户端信任) ”,然后选择“创建”
- 复制要在步骤 15 和 16 中使用的客户端 ID 和客户端密码,然后选择“ 确定”
- 创建 PowerShell 脚本以获取用户同意和刷新令牌。
获取访问令牌需要用户同意,除非你有刷新令牌。 但是,由于脚本不支持 UI 组件,因此你需要通过另一种方式获得同意。 此 PowerShell 提供了用于获取许可和刷新令牌的选项。
打开记事本或喜欢的编辑器,然后将 PowerShell 脚本复制到编辑器。 将 和$clientSecret设置为$clientId注册应用时收到的客户端 ID 和机密 (请参阅步骤 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 运行>命令:
cmd.exe
在命令提示符下,导航到保存 GetTokens.ps1 的文件夹,然后输入以下命令:
powershell.exe -File .\GetTokens.ps1
当 PowerShell 脚本成功运行时,它将启动一个浏览器会话,你可以在其中输入 Google 凭据。 同意后,网页包含授权代码 (请参阅请复制此代码...) 。
复制授权代码,然后在控制台窗口中的提示符将其输入。 然后,PowerShell 脚本返回刷新令牌。 复制刷新令牌。 应像对待密码一样对待刷新令牌;如果有人掌握了它,他们就有权访问你的资源。
- 在访问 Google 服务的“ 发现未经批准的广告”等解决方案中,将凭据对象的
clientId、clientSecret和refreshToken字段设置为您在步骤 13 和 14 中收到的值。