我正致力于将使用googlegdataapi客户机+用户/通行证身份验证的Python脚本转换为更适合生产的东西(API密钥)。我对他们的身份验证文档的混乱状态感到非常沮丧。诚然,我对OAuth2并没有很好的理解,但对于我的使用情况来说,它似乎要复杂得多,即:每24小时点击一次Google Analytics,以获得我们网站上最受欢迎的X篇文章。在
在这种情况下,我们处理的不是修改某人的个人数据,所有活动都集中在一个帐户上。对于如此简单的事情,OAuth2似乎不值得复杂化。在
我在googleapi控制台上看到了(https://code.google.com/api/console/),我在那里注册并注意到在“web应用程序的客户机ID”下面有一个键的“简单API访问”部分(看起来是OAuth2)。还有Google域更新页面https://www.google.com/accounts/UpdateDomain,但这似乎与OAuth有关。在
有没有任何方法可以使用这个简单的API访问密钥(而不是OAuth)来检索pythongdata客户机的分析数据,如果有,有人有任何身份验证示例吗?我已经让数据检索工具在经过身份验证后就可以工作了,但是我使用的是user/pass方法,这不适合生产。在
格雷格
如果您已经在使用库gdata-python-client,那么如果您是应用程序将要授权的唯一用户,则这相对比较容易。在
2011年9月的a blog post中详细介绍了一般机制,但为了完整起见,我将在这里描述它们。在
第1部分:转到APIs console并开始一个新项目。在
第2部分:在项目中,转到“服务”并启用“分析API”
第3部分:在项目中,转到“API访问”,然后单击“创建OAuth 2.0客户机ID…”(您需要提供产品名称,但您提供的值无关紧要)。当要求输入应用程序类型时,选择“已安装的应用程序”,然后选择“创建客户端ID”。由于您将是唯一的用户,因此您只需要一个刷新令牌,并且您可以通过从桌面应用程序一次授权来获得此令牌。在
第4部分:从API控制台获取客户端id和客户端机密,然后创建一个空令牌:
我从GData FAQ得到了范围,但我不确定它是否正确。在
第5部分:使用令牌创建授权URL供您访问:
^{2}$由于您的应用程序是“已安装的应用程序”,所以您的重定向URI是默认的
'urn:ietf:wg:oauth:2.0:oob'
。(另请注意,这篇博文有一个错误,并使用了关键字参数redirect_url
。)第6部分:访问url并授权您的应用程序代表您的帐户提出请求。授权后,您将被重定向到带有代码的页面。此代码将用于交换访问令牌和长期刷新令牌。代码的生命周期为10分钟,访问令牌的生命周期为1小时。刷新令牌将允许您获取新的访问令牌,以永久性地对请求进行签名(或直到您从您的帐户获得revoke权限)。在
第7部分:使用代码获取访问令牌:
这也与博客文章略有不同,因为我们使用的是已安装的应用程序。在
第8部分:使用令牌,您现在可以向analytics客户端发出您想要的所有请求:
这是一大笔钱。当访问令牌过期时,使用该令牌签名的API请求将被拒绝。然而,通过如上所述授权客户端,当所述请求失败时,
token
尝试使用刷新令牌来获得新的访问令牌。如果它成功地获得了一个新的访问令牌,客户端将重新发送原始的API请求,并用新的访问令牌进行了签名。在我对Analytics API一无所知,所以我不会提供更多细节。在
未来使用说明1:保存信息以备将来使用。你可以在不同的地方重复使用,使用后非常容易。库提供了名为
token_to_blob
和token_from_blob
的方法,这些方法允许将令牌转换为字符串并从字符串中转换:完成此操作后,可以将字符串存储在文件中,并终止正在运行的Python进程。当您想再次使用它时:
未来使用注意事项2:只要您有刷新令牌,此令牌将能够用于授权客户端并反复执行所有魔术。如果出于某种原因,您希望在不调用
token.generate_authorize_url
的情况下再次获取访问令牌,则需要在对象上手动设置:未来使用注意事项3:另外,如果您丢失了刷新令牌,并且希望在不必进入浏览器的情况下获得另一个刷新令牌,那么您可以使用
approval_prompt
参数通过访问以下内容生成的url来获取新的刷新令牌:相关问题 更多 >
编程相关推荐