【问题标题】:Access Xero from Google App Engine从 Google App Engine 访问 Xero
【发布时间】:2014-02-19 00:59:22
【问题描述】:

我正在尝试从我的 Google App Engine 系统访问 Xero(会计软件)。 (Python 2.7)。

Xero 示例使用 M2Crypto,但它使用的 .c 文件似乎不适用于 App Engine。我也从 Google 下载了 pycrypto,但这也有同样的问题。

在这个阶段,我希望我的 App Engine 程序有一个按钮供用户登录 Xero。有什么建议吗?

注意:其中一些软件包似乎需要 Visual Studio 或 C 编译器,而我没有。

更新。似乎只有“私人”应用程序需要 pycrypto 或 m2crypto,我都无法安装。公共应用程序不需要这些,我下面的示例两者都有。我正在继续解决这个问题。

提前致谢
David(Windows Vista、Python 2.7、当前的 Google App Engine SDK)

【问题讨论】:

  • appengine 运行时提供的 Pycrypto 以何种方式存在相同的问题?
  • 嗨,大卫,您已经勾选了下面的答案,您能分享一个对您有用的示例吗?谢谢。
  • 下面的回答是一个“好的”指南。我仍在努力解决这个问题。 Xero 的例子只是零碎的。非常令人沮丧:)
  • 好的 - 几天后我也会这样做。你有没有看到(github.com/freakboy3742/pyxero)它可能会有所帮助......
  • 更新 - 按照 Hamish 的建议尝试 pyxero。从 Python Shell 运行时,我可以从 PublicCredentials() 获得回复,但从我的 App Engine 应用程序运行时出现“TooManyRedirects: Exceeded 30 redirects”错误。

标签: python google-app-engine


【解决方案1】:

我可以使用 pyzero 访问 xero,但是有几个问题,最重要的是需要升级打包为 requests 库的一部分的 urllib3 版本。

我创建了一个简单的项目来演示它的使用。 https://github.com/hamish/gae_xero

我需要安装的库是:

https://codeload.github.com/freakboy3742/pyxero/zip/master

http://labix.org/download/python-dateutil/python-dateutil-1.5.tar.gz

https://codeload.github.com/kennethreitz/requests/zip/master

https://codeload.github.com/requests/requests-oauthlib/zip/master

https://pypi.python.org/packages/source/o/oauthlib/oauthlib-0.6.1.tar.gz

https://pypi.python.org/packages/source/u/urllib3/urllib3-1.7.1.tar.gz(安装到requests/packages/目录下)

另外,必须安装并启用 pycrypto 库:

sudo pip install pycrypto

[摘自 app.yaml]

- name: pycrypto version: latest

【讨论】:

  • 感谢您的努力,哈米什。我可以看到你已经考虑了很多。
  • 感谢您的努力 Hamish。我可以看到你已经考虑了很多。但是,您的应用程序是使用 pycrypto 的私有应用程序,而我的应用程序是公开的。我无法安装 pycrypto,因为“无法找到 vcvarsall.bat”错误启动了整个搜索。大卫。
  • 嗨,大卫,不客气。 Pyzero 声称支持公共应用程序以及私有应用程序。您是否仍然收到太多重定向错误?如果是这样 - 升级 requests/packages/urllib3 后你仍然得到它吗?几乎可以肯定,该库对于公共和私有应用程序都是通用的。
  • fwiw - 我遇到了类似的问题,但最终能够通过灵感 hamish 的库、旧版本的请求 (2.3.0) 和 oauthlib 的小补丁来使用来自的 rsaalgorithm pycrypto 而不是密码学。如果有用,很高兴与任何人分享差异。
【解决方案2】:

最好的办法是通过AppEngine URL Fetch Service 访问Xero API Endpoints。在此过程中,您可能必须满足Xero API Authentication

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2014-11-18
    • 2014-12-16
    • 1970-01-01
    相关资源
    最近更新 更多