Admin SDK和2 Legged Oauth

时间:2013-06-10 08:50:43

标签: python google-admin-sdk

有没有人有幸使用Admin SDK和python使用2 Legged Oauth?

我在https://developers.google.com/admin-sdk/directory/v1/guides/authorizing关于2LO的文档中唯一能看到的内容如下:

“如果您的应用程序具有某些不寻常的授权要求,例如在请求数据访问(混合)或域范围授权(2LO)的同时登录,则您当前无法使用OAuth 2.0令牌。在某些情况下,您必须使用OAuth 1.0令牌和API密钥。您可以在API API控制台的API访问窗格的“简单API访问”部分中找到应用程序的API密钥。“

在搜索Googles网站时,我能够找到关于在gdata库中使用2LO的示例,但没有关于将它与新的sdks一起使用的内容....

如果有人可以向我指出正确的文档集 - 或者如何使用2LO /新SDK的示例 - 我们将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

新的管理SDK目录和报告API支持OAuth 1.0身份验证,包括两条腿OAuth。但是,Google API Python客户端库具有removed OAuth 1.0 support

如果可能,您应该为您的应用升级到OAuth 2.0和(可能)Service Accounts(双腿替换)。

我确实有一个我想要使用Directory API的Apps Marketplace应用程序,但市场仍然只有两条腿的OAuth。我设法使用gdata库来验证和低级POST / GET库调用,使用2-legged的Directory API。一个简单的例子:

使用2LO,Admin API和旧GData库为用户提供Google Apps:

gapps = gdata.client.GDClient()
gapps.ssl = True
gapps.auth_token = gdata.gauth.TwoLeggedOAuthHmacToken(two_legged.key, two_legged.secret, user_email)
uri = 'https://www.googleapis.com/admin/directory/v1/users/%s' % user_email
user_results = gapps.request(method='GET', uri=uri)
user_json = json.loads(user_results.read())

更好的方法可能是利用旧的GData库生成所需的两条腿OAuth标头,然后将这些标头撕掉并将它们粘贴到由新的Google API库生成的发现对象中,但我还没有虽然看起来很糟糕但不应该非常努力。