python - 403 gmail api与python的权限不足
问题描述
我正在尝试运行 gmail API 以从特定用户那里获取电子邮件。但是我总是收到以下错误: googleapiclient.errors.HttpError: https://www.googleapis.com/gmail/v1/users/me/settings/filters?alt=json returned "Insufficient Permission">
我已经尝试了所有不同的选项,从更改范围到在 gmail 设置中启用不太安全的应用程序。最后一件事是我的代码可能是错误的:
from __future__ import print_function
from googleapiclient import discovery
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
# Setup the Gmail API
SCOPES = 'https://mail.google.com/'
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('gmail', 'v1', http=creds.authorize(Http()))
# Call the Gmail API
# results = service.users().labels().list(userId='me').execute()
# labels = results.get('labels', [])
# if not labels:
# print('No labels found.')
# else:
# print('Labels:')
# for label in labels:
# print(label['name'])
label_id = 'mine' # ID of user label to add
filter = {
'criteria': {
'from': 'string@test.com'
}#,
#'action': {
#'addLabelIds': [label_id],
#'removeLabelIds': ['INBOX']
#}
}
result = service.users().settings().filters().create(userId='me', body=filter).execute()
print ('Created filter: %s' % result.get('id'))
可以请帮助我吗?
谢谢
解决方案
只需从运行此脚本的文件夹中删除 credentials.json 文件,然后使用最终所需的范围列表重新运行脚本,例如 SCOPES = [' https://www.googleapis.com/auth/gmail.send ', ' https://www.googleapis.com/auth/gmail.labels ']。在弹出的浏览器窗口中授权所需 gmail 帐户的范围列表。那么你应该准备好了。
背景故事:很可能您通过第一次运行 run_flow() 时弹出的浏览器屏幕授权了较少许可的范围(例如只读)。这将在您运行脚本的文件夹中创建一个名为 credentials.json 的文件。此凭据.json 不会根据您上面的脚本再次重新生成。它只是在第一次范围内冻结。出于好奇,您可以打开并阅读 credentials.json 并查找键“范围”。当然,您不能在此文件中手动添加更多范围并期望更新的范围可以工作。如果有的话,必须为不同的范围集重新生成。
不相关的注意事项:尽可能避免过于宽松的范围https://mail.google.com/ :)
推荐阅读
- java - 从 Java 中的 2 个文件中打印匹配信息
- c# - 如何使用“$ UID SEARCH ALL”获取所有消息的uid?
- android - android:设置不同尺寸的字体样式
- visual-studio-code - 在 Visual Studio Code 中自定义链接/URL 语法突出显示颜色?
- javascript - Asp.net Core 2.0 RequestSizeLimit 属性不起作用
- php - 带有 JSON 问题的 PHP
- sql - Rails:为每个 has_one 关联创建一个模型
- python - 在 csv.DictWriter 中用 python 编写 unicode 的最佳方法是什么
- shell - 尝试连接到 ssh 代理时不断收到错误 /Users/newuser/.ssh/id_rsa: No such file or directory。知道我做错了什么吗?
- handlebars.js - 车把部分块作为代码模板