2015-05-17 24 views
1

要使用新的Google Directory API,我們創建了一個OAuth2「服務帳戶」(請參閱​​Using OAuth 2.0 for Server to Server Applications)。這基本上是一個PKCS#12文件。我們所有的Directory API腳本都可以正常使用這個服務帳號。將Google EmailSettings API Python代碼從OAuth1移動到OAuth2服務帳戶

我們還使用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?

回答

1

another SO question它告訴你如何做到這一點,但使用稍微更新的gdata.apps.emailsettings.client方法。

如果你必須留在gdata.apps.emailsettings.service那麼你就可以「砍」的OAuth 2.0到物體上的東西,如:

  1. 構建您的OAuth 2.0 credentials對象,你已經做了你的管理員SDK目錄API調用。

  2. 構建您的GData客戶端對象,因爲您已經在代碼的第1-3行中進行了操作。

  3. 抓鬥從您的憑據訪問令牌對象並把它作爲一個標題來你的客戶對象:

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

如果你得到一個401響應(訪問令牌過期),重複1和3獲得並應用新的訪問令牌。

相關問題