没有足够的权限通过Gmail API删除邮件

Leo*_*onH 4 python debugging google-oauth gmail-api

我的代码应该在我的收件箱中收到一条消息,检查它是否有链接,然后从电子邮件中提取链接然后将其删除.

message = gmail_service.users().messages().get(userId='me', id=thread['id'], format='raw').execute()    #get message using thread id
msg_str = base64.urlsafe_b64decode(message['raw'].encode('ASCII'))
msg = email.message_from_string(msg_str)
for part in msg.walk():
    msg.get_payload()
    if part.get_content_type() == 'text/html':
        mytext = base64.urlsafe_b64decode(part.get_payload().encode('UTF-8'))
        html = BeautifulSoup(mytext)
        for link in html.find_all('a'):
            mylink = link.get('href')
            print mylink
            try:
                service.users().messages().trash(userId='me', id=thread['id']).execute()
                print 'Message with id: %s trashed successfully.' % msg_id
            except errors.HttpError, error:
                print 'Could not trash ' + thread['id'] + ': %s' % error
Run Code Online (Sandbox Code Playgroud)

我在代码中定义的范围是.modify应该给我,我需要垃圾邮件的权限,没有失败.为什么我收到错误:

<HttpError 403 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/147d8c9a6348e437/trash?alt=json returned "Insufficient Permission">
Run Code Online (Sandbox Code Playgroud)

编辑:即使是记录的示例也会返回403禁止错误,这必定是Gmail API本身的错误.

小智 7

在过去的某个时刻,您在同一目录中注册了readonly作用域,并将其缓存在名为gmail.storage的文件中.

将该文件移开并再次运行程序,它应该可以工作.

  • gmail.storage 文件在哪里/什么是? (2认同)