我在我的Google Apps域上创建了一个服务帐户,启用了域范围委派,并从域的控制面板在服务帐户的客户端ID上启用了完整的gmail和pubsub API作用域。
我可以成功地实例化gmail API客户端,并用模拟域的一个帐户
credentials = oauth2client.SignedJwtAssertionCredentials(secret['client_email'], secret['private_key'], ['https://www.googleapis.com/auth/gmail.modify'], sub='accountToImpersonate@domain.com')
http = httplib2.Http()
credentials.authorize(http)
return discovery.build('gmail', 'v1', http=http)
我正试图用以下内容在模拟用户的帐户上设置推送通知webhook。指定的主题名称有效。
request = {
'labelIds': ['INBOX'],
'topicName': 'projects/projectName/topics/topicName'
}
gmail.users().watch(userId='me', body=request).execute()
我收到以下错误后的电话观看:
<HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/watch?alt=json returned "Invalid developer ID">
对其他gmail API方法(列表消息等)的调用成功。
具有域范围委派的服务帐户是否能够在域用户的帐户上启用gmail推送通知webhook?
我最近用一个服务帐户成功地做到了这一点^^,只需在pubsub客户端设置调用中传递用户的电子邮件地址,而不是"我"