请求电子邮件审核导出失败,状态为400,“文件过早结束”。

时间:2016-12-13 14:33:11

标签: python-3.x google-api google-admin-sdk google-api-python-client

根据https://developers.google.com/admin-sdk/email-audit/#creating_a_mailbox_for_export我试图以这种方式请求G Suite中用户的电子邮件审核导出:

def requestAuditExport(account):
    credentials = getCredentials()
    http = credentials.authorize(httplib2.Http())
    url = 'https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/helpling.com/'+account
    status, response = http.request(url, 'POST', headers={'Content-Type': 'application/atom+xml'})
    print(status)
    print(response)

我得到以下结果:

  

{'content-length':'22','expires':'星期二,2016年12月13日14:19:37 GMT','日期':'星期二,2016年12月13日14:19:37 GMT', 'x-frame-options':'SAMEORIGIN','transfer-encoding':'chunked','x-xss-protection':'1; mode = block','content-type':'text / html; charset = UTF-8','x-content-type-options':'nosniff',' - content-encoding':'gzip','server':'GSE','status':'400','cache -control':'private,max-age = 0','alt-svc':'quic =“:443”; MA = 2592000; V = “35,34”'}

     

b'Premature end of file。'

我看不出问题出在哪里,有人可以给我一个提示吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

通过转到Admin Console下的Manage APISecurity客户端访问权限页面来修复它,并添加Directory API所需的客户端ID范围。有关详细信息,请查看此document

答案 1 :(得分:0)

好的,发现了什么问题,并自己解决了。最后它看起来像这样:

http = getCredentials().authorize(httplib2.Http())
url = 'https://apps-apis.google.com/a/feeds/compliance/audit/mail/export/helpling.com/'+account
headers = {'Content-Type': 'application/atom+xml'}
xml_data = """<atom:entry xmlns:atom='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'> \
                <apps:property name='includeDeleted' value='true'/> \
              </atom:entry>"""
status, response = http.request(url, 'POST', headers=headers, body=xml_data)

不确定是关于身体还是头部。它现在有效,我希望它能帮助别人。

非常感谢。