我正尝试在GAE应用程序的Dropbox.com文件夹中创建文件。 我已经完成了注册Dropbox应用程序的所有步骤,并在我的开发机器上从Dropbox本地安装了Python SDK。 (请参阅dropbox.com API)。 当我在本地机器的Dropbox SDK中使用cli_client.py测试脚本访问dropbox - 可以“放置”文件等时,它完全正常工作。将文件写入GAE的Dropbox帐户
我现在想要开始在GAE环境中工作,有点棘手。 一些帮助将是有用的。
对于那些熟悉的Dropbox API代码,我有以下问题迄今:
1期
的rest.py的Dropbox API模块使用pkg_resources才能得到安装在定点的证书本地机器安装的软件包。 我换成
TRUSTED_CERT_FILE = pkg_resources.resource_filename(__name__, 'trusted-certs.crt')
与
TRUSTED_CERT_FILE = file('trusted-certs.crt')
并放置在证书文件在我的GAE应用程序目录。也许这是不正确的;请参阅下面我的验证错误代码。
问题2
的session.py收存箱API模块使用的OAuth模块,所以改变了包括到应用服务引擎的OAuth。
但提出了一个例外,GAE的oauth没有Dropbox session.py模块使用的OAuthConsumer方法。所以我下载了oauth 1.0,并添加到我的应用程序中,而不是GAE oauth。
3期
GAE SSL模块似乎并不具有CERT_REQUIRED财产。
这是一个常数,所以我改变
self.cert_reqs = ssl.CERT_REQUIRED
到
self.cert_reqs = 2
这是调用
ssl.wrap_socket(sock, cert_reqs=self.cert_reqs, ca_certs=self.ca_certs)
验证错误
时使用但我仍然无法连接到Dropbox的:
Status: 401
Reason: Unauthorized
Body: {"error": "Authentication failed"}
Headers: [('date', 'Sun, 19 Feb 2012 15:11:12 GMT'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('content-type', 'application/json'), ('server', 'dbws')]
我希望有人回答了这个。同时,虽然我不确定pkg_resources.resource_filename()是什么,但我认为它返回一个文件名,而不是打开的文件,而file()打开指定的文件并返回一个流(打开文件)对象。您可能想尝试使用TRUSTED_CERT_FILE ='trusted-certs.crt''。 – 2012-02-20 05:03:57
感谢Guido - 会尝试 – erickCo 2012-02-20 13:39:04
Guido,你说的没错,'pkg_resources.resource_filename()'返回的类型是'str'。该值是证书文件的完整路径。所以我按照你的建议做了改变。唉,仍然是同样的错误。 – erickCo 2012-02-20 13:54:20