Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 尝试构建简单的文件上传器facebook应用程序_Python_Facebook_Dropbox_Dropbox Api_Uploader - Fatal编程技术网

Python 尝试构建简单的文件上传器facebook应用程序

Python 尝试构建简单的文件上传器facebook应用程序,python,facebook,dropbox,dropbox-api,uploader,Python,Facebook,Dropbox,Dropbox Api,Uploader,长期潜伏者,第一次提问者。请原谅我的打字错误,因为我喝的咖啡和打字的准确性成反比 我想做的是为fan facebook页面创建一个简单的上传应用程序。我已经决定用Python编写它,这是我所知道的唯一一种语言,并且受到FB Dev的支持 此应用程序的目标非常简单: 用户只需点击一个框,就会打开一个对话框,在硬盘上选择一个文件并上传到云上(我已经决定使用dropbox,稍后会有更多介绍) 上载程序应该只接受特定的文件扩展名 用户应该能够浏览和下载上述文件 应用程序应该能够检测洪水企图,并且在理想情

长期潜伏者,第一次提问者。请原谅我的打字错误,因为我喝的咖啡和打字的准确性成反比

我想做的是为fan facebook页面创建一个简单的上传应用程序。我已经决定用Python编写它,这是我所知道的唯一一种语言,并且受到FB Dev的支持

此应用程序的目标非常简单:

  • 用户只需点击一个框,就会打开一个对话框,在硬盘上选择一个文件并上传到云上(我已经决定使用dropbox,稍后会有更多介绍)
  • 上载程序应该只接受特定的文件扩展名
  • 用户应该能够浏览和下载上述文件
  • 应用程序应该能够检测洪水企图,并且在理想情况下能够检测哪个facebook用户正在上传洪水企图。(这是对我编码“技能”的可悲控诉,因为这个目标的下半部分是一个延伸目标)
  • 理想情况下,用户应该能够将文件从云移到云,以及从云移到磁盘。这并不重要
  • 好了,现在我已经为我的代表作制定了目标,我将继续我的工作,在谦卑地接近众神寻求指导之前

    首先,我在Heroku上创建了一个帐户,并在那里创建了应用程序。现在它基本上就在那里,没有任何代码

    此后,我开始在网上寻找简单的Python文件上传程序。在四处搜索之后,我在DropBox开发站点上找到了这段代码。因此,我注册了dropbox SDK,并不得不通过该软件安装“安装工具” 我使用了ez_setup.py,并简单地运行了似乎通过了“setuptools模块”not found错误的程序

    我已经把代码贴在下面了

    # 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当前位置他的帖子很长,但这会帮助他得到一个好的答案