使用 suds 在 Python 中使用 OAuth2 进行 Google Adwords API 身份验证

Posted

技术标签:

【中文标题】使用 suds 在 Python 中使用 OAuth2 进行 Google Adwords API 身份验证【英文标题】:Google Adwords API authentication with OAuth2 in Python with suds 【发布时间】:2012-03-12 19:46:22 【问题描述】:

我正在尝试使用具有 OAuth2 授权的 Adwords API。

我可以授权一个帐户来获取一个授权码。我可以将此代码交换为 OAuth2 access_token/refresh_token。但接下来...?

Google Adwords API SOAP 请求标头需要 authToken、developerToken 和 userAgent(clientCustomerId 是可选的)。谁能指出我从 access_token 到 authToken 的文档(我想这是我缺少的元素)。

我正在使用 Python,并且已成功使用 Python Adwords 库,以及使用 suds 作为 SOAP 客户端直接调用 API,使用用户名/密码创建 authToken,但我需要移动到我的应用程序的 OAuth2 实现。

我在互联网、Google Adwords Group 和 *** 上进行了搜索,但没有找到任何帮助。我查看了 OAuth2 游乐场,但还没有设法让它来执行任何与 SOAP 相关的调用,尽管这是我的下一个调用点。

任何帮助或建议将不胜感激。

干杯 H

【问题讨论】:

【参考方案1】:

其实就在这里:

http://code.google.com/p/google-api-ads-python/wiki/AdWordsOAuth2

它应该为您指明正确的方向。谷歌似乎把以前的版本放在前面(http://code.google.com/p/google-api-ads-python/wiki/AdWordsOAuth)。该页面绝对应该被标记为已弃用并指向新页面。

希望这会有所帮助。

【讨论】:

【参考方案2】:

AdWords API 实际上还不支持 oAuth 2.o,所以这可能是您的问题;目前只支持1.0a。 python示例代码可以在这里找到:http://code.google.com/p/google-api-adwords-python-lib/source/browse/trunk/examples/adspygoogle/adwords/other/use_oauth.py

【讨论】:

您链接到的示例似乎正在使用 oAuth 2.0。尽管如此,我确实面临着 Howard Sandford 所描述的同样问题。 自我最初发布此示例以来,该示例可能已被修改,因为 AdWords API 现在已更新为支持 oAuth 2.0。事实上 oAuth 2.0 现在是推荐的身份验证机制,您还应该注意 oAuth 1.0a 和 ClientLogin API 已被弃用,因此您应该尽可能使用 oAuth 2.0。 该示例没有被修改,并且它令人困惑地加载了 python-oauth2,这似乎是 OAuth 1.0 协议的 Python 实现的第二次迭代......因为最新的 code.google.com/p/google-api-adwords-python-lib/source/browse/… 文件明确说明了 oauth 版本1.0a,即使 .py 文件里面有 20 个。所以基本上,Python 在我能看到的任何地方都支持 OAuth 2.0。

以上是关于使用 suds 在 Python 中使用 OAuth2 进行 Google Adwords API 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python Suds 客户端添加 XML 元素类型

Soap 请求在 Soapui 中运行良好,但在 python 中运行良好 - ZEEP - SUDS

Python如何使用suds MessagePlugin和lxml仅解码xml中的特定部分

如何使用python完成对WebService服务的调用?suds-py3插件安利一下!

python读取webservice

python 将Suds对象转换为Python字典