【问题标题】:Move Google EmailSettings API python code from OAuth1 to OAuth2 service account将 Google EmailSettings API python 代码从 OAuth1 移动到 OAuth2 服务帐户
【发布时间】:2015-07-28 19:02:00
【问题描述】:

为了使用新的 Google Directory API,我们创建了一个 OAuth2“服务帐户”(请参阅​​ Using OAuth 2.0 for Server to Server Applications)。这基本上是一个 PKCS #12 文件。我们所有的 Directory API 脚本都可以在此服务帐户上正常工作。

我们还使用 EmailSettings API (Developer's Guide Email Settings API) 来管理我们的一些 Google 帐户设置。这些脚本没有迁移到新的 API 格式,因此我们继续使用旧的 OAuth1 身份验证方法。直到最近,这一直运作良好。但是,Google 似乎不再支持 OAuth1 身份验证。

因此,我们需要将 EmailSettings 脚本从 OAuth1 移动到我们的 OAuth2 服务帐户。我们正在使用 gdata Python 库 (GitHub google/gdata-python-client) 来调用 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?

【问题讨论】:

    标签: python oauth google-api google-email-settings-api


    【解决方案1】:

    another SO question 向您展示了如何执行此操作,但使用了稍新的 gdata.apps.emailsettings.client 方法。

    如果您必须继续使用gdata.apps.emailsettings.service,那么您可以通过以下方式“破解”OAuth 2.0 到对象上:

    1. 构建您的 OAuth 2.0 credentials 对象,就像您已经为您的 Admin SDK Directory API 调用所做的那样。

    2. 构建您的 GData 客户端对象,就像您在代码的第 1-3 行中所做的那样。

    3. 从您的凭据对象中获取访问令牌并将其作为标头应用到您的客户端对象:

      client.additional_headers = { 'Authorization': u'Bearer %s' % credentials.access_token}

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

    【讨论】:

      猜你喜欢
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 2014-09-22
      • 2014-04-25
      • 2014-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多