Trying to use Gmail API to delete a label.但它似乎不起作用,并在python中触发了insufficient permission错误.这似乎不正确,因为在Google中显示所有权限都已选中.有没有可以申请解决的代码修复,或者是其他什么?
CODE USED TO DELETE LABEL
try:
target_label_name = "Label_8"
service = build("gmail", "v1", credentials=creds)
messages_results = service.users().messages().list(userId="me", labelIds=[target_label_name]).execute()
messages = messages_results.get("messages", [])
if not messages:
print(f"No emails found with label: {target_label_name}")
return
for message in messages:
# Remove the label from the message
service.users().messages().modify(userId="me", id=message['id'], body={'removeLabelIds': [target_label_name]}).execute()
print(f"Label {target_label_name} removed from message {message['id']}.")
Get this error about insufficient permissions个
<;HttpError 403在请求https://gmail.googleapis.com/gmail/v1/users/me/messages/18c8dae6ea7e602e/modify?alt=json时返回"请求的身份验证范围不足."详细信息:"[{‘Message’:‘权限不足’,‘域’:‘全局’,‘原因’:‘不充分权限’}]">;
But Google Console Shows I have all permissions个
FULL CODE
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
SCOPES = ["https://www.googleapis.com/auth/gmail.modify"]
def main():
creds = None
credentials_path = "C:\\credentials1.json"
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
credentials_path, SCOPES
)
creds = flow.run_local_server(port=0)
with open("token.json", "w") as token:
token.write(creds.to_json())
try:
target_label_name = "Label_8"
service = build("gmail", "v1", credentials=creds)
messages_results = service.users().messages().list(userId="me", labelIds=[target_label_name]).execute()
messages = messages_results.get("messages", [])
if not messages:
print(f"No emails found with label: {target_label_name}")
return
for message in messages:
# Remove the label from the message
service.users().messages().modify(userId="me", id=message['id'], body={'removeLabelIds': [target_label_name]}).execute()
print(f"Label {target_label_name} removed from message {message['id']}.")
except HttpError as error:
print(f"An error occurred: {error}")
if __name__ == "__main__":
main()