python - Gmail API - Python 中的自动转发
问题描述
我一直试图让它工作一段时间,但我无法通过我得到的这个错误代码。
我使用此代码的目标是在 gmail 中设置转发电子邮件地址。这是谷歌文档:https ://developers.google.com/gmail/api/guides/forwarding_settings
我已经复制并粘贴了代码,并且收到了相同的错误消息:
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/settings/forwardingAddresses?alt=json returned "Bad Request">
错误的请求是迄今为止最令人沮丧的错误代码。我正在使用具有域范围委派的服务帐户,所以我认为这不是权限问题。我已经复制了代码,所以很难相信 json 包不正确。我浏览了整个互联网,找不到任何实际使用此功能的示例代码。恐怕 GAM 将是我唯一的选择。
def test():
key_path = 'tokens/admin_client.json'
API_scopes =['https://www.googleapis.com/auth/gmail.settings.sharing','https://www.googleapis.com/auth/gmail.settings.basic']
credentials = service_account.Credentials.from_service_account_file(key_path,scopes=API_scopes)
gmail_service = build('gmail', 'v1', credentials=credentials)
address = { 'forwardingEmail': 'user2@example.com' }
gmail_service.users().settings().forwardingAddresses().create(userId='me', body=address).execute()
解决方案
您使用的服务帐户无权访问 Gmail。
您可以使用服务帐户模拟 GSuite 用户,也可以使用OAuth 直接以用户身份登录。
推荐阅读
- google-app-engine - 如何进行 GAE(标准)和 GKE 通信?
- javascript - 从类名字符串实例化一个对象
- mysql - 拉拉维尔 5.8 。为什么保存到Mysql时,json列中键的顺序会发生变化
- java - 动态找到正确的方法,以免重复相同的代码
- verilog - 访问内部 regs 而不将它们声明为输入/输出
- rest - 使用 HTTP PUT 半更新请求是否合适?
- c# - 您如何创建自定义模型数据注释,您可以在其中将模型属性作为参数传递给以下情况?
- python - 使用python对elasticsearch进行批量索引
- php - 将日期输出从“DD.MM.YYYY”更改为“DD/MM/YYYY”标签
- r - 栅格值都是 NA