2012-01-16 55 views
0

我想让用户在他的Facebook墙上分享照片。我使用Paperclip将所有应用程序的照片存储在S3上。因此,在下面的示例中,@ photo.image.url是我想要在some_album中发布的图像的S3 url。在本地主机上使用fb_graph gem相对容易。在我的控制器中,我有:使用RoR,FbGraph Gem和S3发布到Heroku的Facebook Open Graph的照片

the_photo = open(@photo.image.url) 
    some_album.photo!(
     :access_token => access_token, 
     :source => the_photo 
    ) 

localhost上的the_photo类是“Tempfile”。

对heroku事情变得棘手。使用相同的代码两(看似相关)的事情发生。首先,the_photo是类型“stringIO”。其次,当FbGraph帖子给Facebook我得到以下错误:

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

继承人几个子弹事实的点,可能也有帮助:

  • 的Heroku是一个只读的系统,但显然你可以写一个将它视为
  • 我on Rails的3.1.0
  • 的Ruby 1.9.2
  • Heroku的堆栈竹美里

任何帮助/想法/ work arounds /问题将不胜感激。

回答

1

我不知道为什么,这做的伎俩,但这个工作对我来说:

some_album.photo!(
    :access_token => access_token, 
    :source => open(@photo.image.url) 
) 

,而不是设置变量photo_response =开(@ photo.image.url)。

+0

它的工作原理是因为通过说明您实际上是从url下载图像到您的服务器,然后再次上传它。 – rnaud 2012-02-08 13:42:30