使用Python脚本部署Google Script应用时遭遇401未授权错误求助
解决Google Script部署API的401未授权问题
以下是针对你遇到的401认证错误的排查和解决步骤:
检查访问令牌有效性
你提供的凭证里expiry字段显示令牌在2024-04-03就过期了,过期令牌会直接导致未授权错误。如果你的凭证中没有refresh_token,说明当初授权时没申请离线访问权限,得重新走OAuth2授权流程,获取包含刷新令牌的有效凭证;如果有刷新令牌,可通过以下代码自动刷新:from google.auth.transport.requests import Request if not credentials.valid: credentials.refresh(Request())验证凭证初始化是否正确
调用Credentials.from_authorized_user_info后,打印credentials.valid检查凭证是否有效。如果返回False,说明凭证数据有误,比如token、client_id等字段填写错误,需核对OAuth2授权生成的原始数据。确认作用域授权完整
确保你在授权时实际请求了代码中列出的所有作用域。如果后续修改了作用域,旧令牌会失效,需要重新完成授权流程,让用户同意新的作用域权限。切换到服务账号(自动化场景首选)
用用户令牌做自动化部署容易遇到过期问题,推荐使用服务账号:- 在Google云控制台创建服务账号,下载JSON密钥文件
- 把服务账号邮箱添加到目标Google Script项目的共享列表,授予编辑权限
- 用服务账号凭证初始化客户端:
from google.oauth2 import service_account from googleapiclient.discovery import build SCOPES = [ "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/script.projects", "https://www.googleapis.com/auth/script.deployments" ] SERVICE_ACCOUNT_FILE = '/path/to/your-service-account-key.json' credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) script_service = build('script', 'v1', credentials=credentials)
检查Google Apps Script API是否启用
登录Google云控制台,确认你使用的项目已经启用了Google Apps Script API,未启用的API会拒绝任何请求。
内容的提问来源于stack exchange,提问作者Zaid Bhimala
相关产品推荐
相关产品推荐

