长期潜伏者,第一次提问者。请原谅任何错别字,因为我在喝咖啡和打字准确性之间存在反比关系。
我想做的是为粉丝 Facebook 页面创建一个简单的上传应用程序。我决定用 Python 编写它,因为它是我知道的唯一语言,并且受 FB Dev 支持。
这个应用程序的目标是相当温和的:
- 用户应该能够简单地单击一个框,该框将打开一个对话框来选择他们硬盘上的文件并将其上传到云端(我已经选择了 dropbox,稍后会详细介绍)
- 上传者应该只接受特定的文件扩展名。
- 用户应该能够浏览并能够下载所述文件。
- 该应用程序应该能够检测洪水尝试,并且在理想情况下能够检测到哪个 facebook 用户正在上传它们。(这是对我的编码“技能”的悲哀控诉,即这个目标的后半部分是一个延伸目标)。
- 理想情况下,用户应该能够将文件从云移动到云,以及从云移动到磁盘。这没那么重要。
好的,既然我已经为我的巨著制定了目标,我将跟进我所在的位置,然后谦卑地接近溢出之神寻求指导。
所以首先我在 Heroku 上创建了一个帐户,并在那里创建了应用程序。它现在基本上就在那里,里面没有任何代码。
在此之后,我开始在网上寻找简单的 Python 文件上传器。搜索后,我在 DropBox 开发网站上找到了这段代码。所以我注册了一个保管箱 SDK,并且不得不通过这个http://pypi.python.org/pypi/setuptools安装“设置工具” 我使用了 ez_setup.py 并简单地运行了似乎通过“setuptools 模块”未找到错误。
我已经发布了下面的代码。
# Include the Dropbox SDK libraries
from dropbox import client, rest, session
# Get your app key and secret from the Dropbox developer website
APP_KEY = 'xxxxxetc.'
APP_SECRET = 'xxxxxetc.'
# ACCESS_TYPE should be 'dropbox' or 'app_folder' as configured for your app
ACCESS_TYPE = 'dropbox'
sess = session.DropboxSession(APP_KEY, APP_SECRET, ACCESS_TYPE)
request_token = sess.obtain_request_token()
# Make the user sign in and authorize this token
url = sess.build_authorize_url(request_token)
print "url:", url
print "Please authorize in the browser. After you're done, press enter."
raw_input()
# This will fail if the user didn't visit the above URL and hit 'Allow'
access_token = sess.obtain_access_token(request_token)
client = client.DropboxClient(sess)
print "linked account:", client.account_info()
f = open('working-draft.txt')
response = client.put_file('/magnum-opus.txt', f)
print "uploaded:", response
folder_metadata = client.metadata('/')
print "metadata:", folder_metadata
f, metadata = client.get_file_and_metadata('/magnum-opus.txt',rev='362e2029684fe')
out = open('magnum-opus.txt', 'w')
out.write(f.read())
print(metadata)
此后我发现了错误
Traceback (most recent call last):
File "F:/Python27/FAUploader (Roaring-gorge)/Roaringgorge101", line 2, in <module>
from dropbox import client, rest, session
File "F:\Python27\dropbox\__init__.py", line 3, in <module>
from . import client, rest, session
File "F:\Python27\dropbox\client.py", line 52, in <module>
from .rest import ErrorResponse, RESTClient
File "F:\Python27\dropbox\rest.py", line 8, in <module>
import pkg_resources
ImportError: No module named pkg_resources
我开始有点担心这可能会朝着错误的方向发展,而且我不太擅长编码,甚至更不擅长寻求帮助。因此,在我花太长时间试图使我的问题变得过于完美之前,我现在就发布这个。我真的很喜欢学习编码,如果你们能在正确的方向上帮助我,将不胜感激。似乎每个人,即使是没有经验的人,都能够比我更快地完成这类项目。
这些是我一直在使用的参考资料/我一直在访问的网站
https://www.dropbox.com/developers
我不被允许发布更多超链接,因为我太菜鸟了,显然。'-_-
无论如何,我离题了,任何帮助将不胜感激。
编辑/进度报告
所以我设法更新了 Python 环境以克服上面帖子中描述的错误。然而,我只是成功地获得了一个让我更加困惑的新的。
Traceback (most recent call last):
File "F:\Python27\FAUploader (Roaring-gorge)\Roaringgorge101", line 22, in <module>
access_token = sess.obtain_access_token(request_token)
File "build\bdist.win-amd64\egg\dropbox\session.py", line 205, in obtain_access_token
response = self.rest_client.POST(url, headers=headers, params=params, raw_response=True)
File "build\bdist.win-amd64\egg\dropbox\rest.py", line 260, in POST
return cls.IMPL.POST(*n, **kw)
File "build\bdist.win-amd64\egg\dropbox\rest.py", line 207, in POST
post_params=params, headers=headers, raw_response=raw_response)
File "build\bdist.win-amd64\egg\dropbox\rest.py", line 183, in request
raise ErrorResponse(r)
ErrorResponse: [401] u'Token is disabled or invalid'
>>>
我尝试直接使用 DropBox 来查看应用程序中是否有任何东西可以帮助我解决所有这些问题,但是代码、我的浏览器和 Dropbox 应用程序似乎都完全相互忽略了。
再次感谢很多帮助。我想我可能会在一段时间内对一些 SQL 大发雷霆。