我使用gdata-python-client访问Google域共享联系人API。
在企业应用程序中,您可能希望以编程方式访问用户数据,而不需要用户的任何手动授权。
有一个名为2LO (2条腿的OAuth)的协议,但似乎它被链接到了被废弃的OAuth1:“重要的是:取消了OAuth 1.0,关闭了新的OAuth 1.0客户端的注册。”到处都是Oauth1文档。
有一个新的基于OAuth2的“全域权力下放”配方:
在Google领域,域管理员可以授予第三方应用程序域范围内对其用户数据的访问--这称为域范围的授权。要以这种方式委派权限,域管理员可以在OAuth 2.0中使用服务帐户。
这适用于google-api-python-client,但不适用于gdata-python-client。
问题:有什么方法可以用实现这一点吗?gdata客户端的代码似乎是史前的--是否还有其他的GAE运行时带有支持数据API的委托的现代客户端库?
更新
如果我在httplib2连接上签名并调用Atom端点,我就能够检索提要。
http = httplib2.Http()
http = credentials.authorize(http)
resp, content = http.request(
'https://www.google.com/m8/feeds/contacts/default/full', 'GET'
)不幸的是,gdata-python-client使用httplib而不是httplib2。
已解决
也许我遗漏了一些步骤,但是在我们使用httplib2执行调用之前,令牌似乎是无效的。在运行aeijdenberg的答案中给出的示例之前,我必须运行上述代码,否则我将得到401。
发布于 2013-12-19 18:00:27
下面是一个如何在Python中使用gdata库在Google中进行域范围委托的示例:
google-api-python-client-gae-1.2.zip。gdata-2.0.18.zip。app.yaml中,将PyCrypto添加为库:
库:-名称: pycrypto版本:"2.6“SignedJwtAssertionCredentials对象:
从oauth2client.client导入SignedJwtAssertionCredentials凭据= SignedJwtAssertionCredentials( "@developer.gserviceaccount.com",file(“oauth2client.client-Privatekey.pem”,"rb").read(),scope=“SignedJwtAssertionCredentials prn=”@you-domain.com)https://stackoverflow.com/questions/20676513
复制相似问题