如何在python中使用OAuth2Credentials和Google API gdata客户端?

时间:2012-10-09 03:28:03

标签: python oauth-2.0 gdata gdata-api google-data-api

我已经了解了OAuth2的工作原理(通过https://developers.google.com/api-client-library/python/guide/aaa_oauth),现在有一个OAuth2Credentials对象(让我们调用对象credentials)我想用于Google Apps配置目的(此处的示例)正在使用网站,但可能是任何gdata apis)

如果我尝试:

client = gdata.sites.client.SitesClient(site="test-site",domain='my.domain')
client = credentials.authorize(client)

我得到了

TypeError: new_request() got an unexpected keyword argument 'http_request'

当我尝试做任何事情时

如果我尝试

client = gdata.sites.client.SitesClient(site="test-site",domain='my.domain', auth_token=credentials)

client = gdata.sites.client.SitesClient(site="test-site",domain='my.domain', auth_token=credentials.access_token)

我得到一个AttributeError,相关对象(凭证或credentials.access_token)没有属性'modify_request'

我能尝试什么想法?

2 个答案:

答案 0 :(得分:0)

我不完全确定Google的客户端代码,但您可以随时尝试(无耻插件)sanction。它是我之前在Github和PyPI上发布的OAuth 2.0客户端。

好处:

  • 作为一个惊人的55 LOC,它非常很容易理解。如果出现问题,你不必在这里提问。你应该能够理解正在发生的事情;)
  • 已经与8家不同的提供商(包括Google)进行了测试

缺点:

  • 显然需要您当前代码的重构
  • 不承担(并因此提供)持久性实现
  • 不提供API实现(您必须对您正在处理的OAuth 2.0公开的API有基本的了解)

答案 1 :(得分:0)

answer表示您必须先对OAuth2Credentials对象进行monkeypatch,然后再将其传递给SitesClient(auth_token=credentials)。它有一个答案显示如何进行猴子补丁