我使用网络浏览器对用户进行身份验证后工作正常。但是,我计划在没有浏览器的服务器上托管脚本,所以我需要使用服务帐户。
我已按照此处列出的说明操作:
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的仪表板上查看,我可以看到错误列出的请求,甚至可以显示我是否正在请求列表或获取方法。
我想我也有一些不需要的代码,因为我试图适应以前的情况,不知道要删除什么。