尝试使用服务帐户(Python)时,Gmail API:400错误请求

时间:2016-08-09 15:48:08

标签: python google-api gmail-api

我使用网络浏览器对用户进行身份验证后工作正常。但是,我计划在没有浏览器的服务器上托管脚本,所以我需要使用服务帐户。

我已按照此处列出的说明操作:

https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount

我觉得我很接近,但在尝试列出(或获取)标签时遇到错误(此代码在我将其更改为服务帐户之前有效。

from __future__ import print_function
from httplib2 import Http
import sys,os
from apiclient.discovery import build
import oauth2client
from oauth2client import client
from oauth2client import tools
import messagebird
from oauth2client.service_account import ServiceAccountCredentials

try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None


SCOPES = ['https://www.googleapis.com/auth/gmail.modify']
APPLICATION_NAME = 'Gmail API Quickstart'

def main():
     credentials = ServiceAccountCredentials.from_json_keyfile_name(
    'my_file.json', scopes=SCOPES)

    delegated_credentials = credentials.create_delegated('myemail@address.com')
    http_auth = credentials.authorize(Http())

    service = build('gmail', 'v1', http=http_auth)

    response = service.users().labels().list(userId='myemail@address.com').execute()
    labels = response['labels']
    for label in labels:
        print ('Label id: %s - Label name: %s' % (label['id'], label['name']))

if __name__ == '__main__':
    main()

错误是在线:

response = service.users().labels().list(userId='myemail@address.com').execute()

这是我得到的错误

  请求时

HttpError 400   https://www.googleapis.com/gmail/v1/users/myemail@address.com/labels?alt=json   返回"错误请求"

但是我觉得我很亲密,因为如果我在https://console.developers.google.com的仪表板上查看,我可以看到错误列出的请求,甚至可以显示我是否正在请求列表或获取方法。

我想我也有一些不需要的代码,因为我试图适应以前的情况,不知道要删除什么。

0 个答案:

没有答案