Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Google EmailSettings API python代码从OAuth1移动到OAuth2服务帐户_Python_Oauth_Google Api_Google Email Settings Api - Fatal编程技术网

将Google EmailSettings API python代码从OAuth1移动到OAuth2服务帐户

将Google EmailSettings API python代码从OAuth1移动到OAuth2服务帐户,python,oauth,google-api,google-email-settings-api,Python,Oauth,Google Api,Google Email Settings Api,为了使用新的Google目录API,我们创建了一个OAuth2“服务帐户”(请参阅)。这基本上是一个PKCS#12文件。我们的所有目录API脚本都可以与此服务帐户配合使用 我们还使用EmailSettings API()来管理我们的一些Google帐户设置。这些脚本没有移动到新的API格式,因此我们继续使用旧的OAuth1身份验证方法。直到最近,这项措施一直运作良好。然而,谷歌似乎不再支持OAuth1身份验证 因此,我们需要将EmailSettings脚本从OAuth1移动到我们的OAuth2服

为了使用新的Google目录API,我们创建了一个OAuth2“服务帐户”(请参阅)。这基本上是一个PKCS#12文件。我们的所有目录API脚本都可以与此服务帐户配合使用

我们还使用EmailSettings API()来管理我们的一些Google帐户设置。这些脚本没有移动到新的API格式,因此我们继续使用旧的OAuth1身份验证方法。直到最近,这项措施一直运作良好。然而,谷歌似乎不再支持OAuth1身份验证

因此,我们需要将EmailSettings脚本从OAuth1移动到我们的OAuth2服务帐户。我们正在使用
gdata
Python库()调用EmailSettings API。这是我们当前通过身份验证进行EmailSettings API调用的方式:

import gdata.apps.emailsettings.service
# self is an EmailSettingsService object (gdata.apps.emailsettings.service)
self.domain = "mydomain.com"
self.source = "my application name"
token = get OAuth1 token string from a file
self.SetOAuthInputParameters(
  gdata.auth.OAuthSignatureMethod.HMAC_SHA1,
  consumer_key    = token.oauth_input_params._consumer.key,
  consumer_secret = token.oauth_input_params._consumer.secret
  )
token.oauth_input_params = self._oauth_input_params
self.SetOAuthToken(token)
使用这些Python
gdata
库,如何使用我们的OAuth2服务帐户(即PKCS#12文件)进行身份验证以使用EmailSettings API?

有一个示例向您展示了如何进行身份验证,但使用了稍微更新的
gdata.apps.EmailSettings.client
方法

如果您必须使用
gdata.apps.emailsettings.service
,则可以使用类似以下内容将OAuth 2.0“黑客”到对象上:

  • 构建OAuth 2.0
    credentials
    对象,就像您正在为Admin SDK目录API调用所做的那样

  • 按照代码第1-3行中的步骤构建GData客户机对象

  • 从凭据对象获取访问令牌,并将其作为头应用于客户端对象:

    client.additional_头={
    “授权”:u'承载%s'%凭据。访问\u令牌}

  • 如果收到401响应(访问令牌已过期),请重复1和3以获取并应用新的访问令牌