如何使用服务帐户oauth2 Python客户端通过Google电子邮件设置API进行身份验证?

如何使用服务帐户oauth2 Python客户端通过Google电子邮件设置API进行身份验证?,python,oauth-2.0,google-email-settings-api,Python,Oauth 2.0,Google Email Settings Api,我正在使用Python 2.6和Google API的客户端库,我正试图使用它来获得对电子邮件设置的身份验证访问: f = file(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'rb') key = f.read() f.close() credentials = client.SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key, scope='https://apps-apis.google.co

我正在使用Python 2.6和Google API的客户端库,我正试图使用它来获得对电子邮件设置的身份验证访问:

f = file(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'rb')
key = f.read()
f.close()
credentials = client.SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key,      scope='https://apps-apis.google.com/a/feeds/emailsettings/2.0/', sub=user_email)

http = httplib2.Http()
http = credentials.authorize(http)
return discovery.build('email-settings', 'v2', http=http)
当我执行此代码时,出现以下错误: UnknownApiNameOrVersion:名称:电子邮件设置版本:v2

电子邮件设置的api名称和版本是什么? 是否可以将其与服务帐户一起使用?
关于

使用发现API时,emailsettings API似乎不可用。API发现服务返回API的详细信息—可用的方法等

请参阅PHP客户端API上提出的以下问题

我不清楚为什么emailsettings不能通过discovery API提供,或者是否有这样做的计划。实际上,很多这样的系统和库都没有维护

不推荐使用的gdata客户端库不支持。尝试下面的例子,我可以确认它工作正常


我找到了使用服务帐户oauth2获取电子邮件设置的解决方案: 以下是一个例子:

  SERVICE_ACCOUNT_EMAIL = ''
  SERVICE_ACCOUNT_PKCS12_FILE_PATH = ''
  EMAIL_SETTING_URI = "https://apps-apis.google.com/a/feeds/emailsettings/2.0/%s/%s/%s" 

 def fctEmailSettings():

    user_email = "user@mail.com"
    f = file(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'rb')
    key = f.read()
    f.close()
    credentials = client.SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key, scope='https://apps-apis.google.com/a/feeds/emailsettings/2.0/', sub=user_email)
    auth2token = OAuth2TokenFromCredentials(credentials)
    ESclient = EmailSettingsClient(domain='doamin.com')
    auth2token.authorize(ESclient)
    username = 'username'
    setting='forwarding'
    uri = ESclient.MakeEmailSettingsUri(username, setting)
    entry = ESclient.get_entry(uri = uri,  desired_class = GS.gdata.apps.emailsettings.data.EmailSettingsEntry)

如果您的应用程序中有多个入口点需要访问EmailSettings API,这里有一个可重用的函数,返回“客户端”对象:

然后可以从其他地方调用它,例如访问DelegationFeed:

client = google_get_emailsettings_credentials()
uri = client.MakeEmailSettingsUri(username, 'delegation')
delegates_xml = client.get_entry(
        uri=uri,
        desired_class=gdata.apps.emailsettings.data.EmailSettingsDelegationFeed)

什么是
电子邮件设置客户端
?我想那是你自己的密码。你能分享一下吗?你应该把你的导入包含在示例Kevin中,这是一个死示例链接。看起来这个现在位于
client = google_get_emailsettings_credentials()
uri = client.MakeEmailSettingsUri(username, 'delegation')
delegates_xml = client.get_entry(
        uri=uri,
        desired_class=gdata.apps.emailsettings.data.EmailSettingsDelegationFeed)