fb_graph从base64编码的字符串上传照片

时间:2012-06-22 20:09:43

标签: ruby-on-rails ruby facebook base64 fb-graph

我收到postmarkapp的附件(此处描述:http://developer.postmarkapp.com/developer-inbound-parse.html#attachments)。

我想使用fb_graph(https://github.com/nov/fb_graph)使用照片将这些照片上传到脸书!方法(https://github.com/nov/fb_graph/wiki/Photo-and-Album)。

通过在实际文件的示例中指定:source来进行测试时,这很容易并且工作正常。

但是我试图不写出文件,而只是将base64编码的字符串转换为StringIO并将其作为:source参数传递。这不起作用,我收到此错误:

ruby FbGraph::InvalidRequest: OAuthException :: (#324) Requires upload file

我不想写出文件的原因是因为我正在使用heroku和delayed_job所以我不确定我写的文件是否仍会在处理作业时出现。这样会很好,因为我目前的计划是将图像存储在数据库中并延迟作业。

感谢。

1 个答案:

答案 0 :(得分:0)

我没有找到一种方法来使用heroku,而不首先使用gridfs将其上传到mongohq。您不能使用雪松短暂文件系统,因为在控制器操作期间写入的那些文件对您的delayed_job工作人员不可见。

所以即使它很糟糕我也会这样做;

  1. 从postmarkapp接收上传(阻止一个dyno)
  2. 使用grid fs写入mongohq(这涉及一个阻止一个dyno的上传)
  3. 使用delayed_job排队作业
  4. 从mongohq回读(下载时阻止一名工人)
  5. 发布时重新上传到FB
  6. 那么,为什么不直接发布到Facebook,如果我要承担上传到mongohq的初始阻止成本呢?因为上传的速度比上传到FB的速度要快得多。

    heroku上的答案是让一个node.js dyno从邮戳处理这些回调,因此在从邮戳读取或写入mongohq(或facebook)时不会阻止dyno然后做一些额外的工作让节点应用程序与rails应用程序交互以保持同步。