Python 尝试构建简单的文件上传器facebook应用程序
长期潜伏者,第一次提问者。请原谅我的打字错误,因为我喝的咖啡和打字的准确性成反比 我想做的是为fan facebook页面创建一个简单的上传应用程序。我已经决定用Python编写它,这是我所知道的唯一一种语言,并且受到FB Dev的支持 此应用程序的目标非常简单:Python 尝试构建简单的文件上传器facebook应用程序,python,facebook,dropbox,dropbox-api,uploader,Python,Facebook,Dropbox,Dropbox Api,Uploader,长期潜伏者,第一次提问者。请原谅我的打字错误,因为我喝的咖啡和打字的准确性成反比 我想做的是为fan facebook页面创建一个简单的上传应用程序。我已经决定用Python编写它,这是我所知道的唯一一种语言,并且受到FB Dev的支持 此应用程序的目标非常简单: 用户只需点击一个框,就会打开一个对话框,在硬盘上选择一个文件并上传到云上(我已经决定使用dropbox,稍后会有更多介绍) 上载程序应该只接受特定的文件扩展名 用户应该能够浏览和下载上述文件 应用程序应该能够检测洪水企图,并且在理想情
# 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
回溯(最近一次呼叫最后一次):
文件“F:/Python27/FAUploader(咆哮峡谷)/rowlinggorge101”,第2行,in
从dropbox导入客户端、rest、会话
文件“F:\Python27\dropbox\\uuuu init\uuuuu.py”,第3行,在
从导入客户端、rest、会话
文件“F:\Python27\dropbox\client.py”,第52行,在
从.rest导入错误响应,RESTClient
文件“F:\Python27\dropbox\rest.py”,第8行,在
导入pkg_资源
ImportError:没有名为pkg_资源的模块
我开始有点担心这可能会朝着错误的方向发展&我不太擅长编码,甚至更不擅长寻求帮助。所以,在我花太多时间试图让我的问题变得太完美之前,我现在就发布这篇文章。我真的很喜欢学习编码,如果你们能帮我找到正确的方向,我会非常感激的。似乎每个人,即使是经验很少的人,都能比我更快地完成这类项目
这些是我使用过的参考资料/我访问过的网站
我不被允许发布更多的超链接,因为我显然是个傻瓜
无论如何,我离题了,任何帮助都将不胜感激
编辑/进度报告
因此,我设法更新了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'
>>>
回溯(最近一次呼叫最后一次):
文件“F:\Python27\FAUploader(咆哮峡谷)\Roaringgorge101”,第22行,在
访问令牌=sess。获取访问令牌(请求令牌)
文件“build\bdist.win-amd64\egg\dropbox\session.py”,第205行,在获取访问令牌中
response=self.rest\u client.POST(url,headers=headers,params=params,raw\u response=True)
文件“build\bdist.win-amd64\egg\dropbox\rest.py”,第260行,在POST中
返回cls.IMPL.POST(*n,**kw)
文件“build\bdist.win-amd64\egg\dropbox\rest.py”,第207行,在POST中
post_params=params,headers=headers,raw_response=raw_response)
请求中第183行的文件“build\bdist.win-amd64\egg\dropbox\rest.py”
升起错误响应(r)
ErrorResponse:[401]u'令牌已禁用或无效'
>>>
我试着直接使用DropBox,看看应用程序中是否有任何东西可以帮助我完成这一切,但代码、浏览器和DropBox应用程序似乎都完全忽略了彼此
再次感谢您的帮助。我想我可能会在一段时间内与一些SQL发生冲突。执行安装工具脚本,如下所示
curl http://python-distribute.org/distribute_setup.py | python
这应该解决这个错误
ImportError:没有名为pkg_资源的模块
该计划的其余部分听起来应该是可行的,因为Heroku的免费软件包没有空间容纳这些文件
一个理想的世界是能够检测到哪个facebook用户正在上传它们
只需通过Facebook身份验证流进行身份验证,您就可以使用登录当前用户
https://graph.facebook.com/me?access_token=xxx
使用facepy之类的Facebook Python库
pip install facepy
它就像
from facepy import GraphAPI
graph = GraphAPI('your_access_token_goes_here')
graph.get('me')
这里缺少逻辑,比如像Dropbox那样对网页进行身份验证,但这是一般要点
到目前为止,一切看起来都很好,我不认为您现在处于Facebook API检查阶段,因为这是一个Dropbox API问题,Python setuptools发布了对ErrorResponse的响应:[401]u'Token is disabled or invalid'在我的代码中得到了相同的结果 从Dropbox API: 在令牌不再授权的情况下,REST API将返回HTTP错误401 Unauthorized response
我复制了生成的链接,并再次授权该应用程序使我的代码正常工作:)当一个人意识到咖啡消费量和打字能力之间存在反比关系时,就应该按照咖啡消费量的比例更仔细地校对自己的帖子。你应该知道,你的帖子对于99.9%的读者来说太长了s@wroniasty当前位置他的帖子很长,但这会帮助他得到一个好的答案