为什么我的S3图像对Facebook Javascript SDK无效?

时间:2013-08-13 16:34:50

标签: ruby amazon-s3 paperclip

我遇到了Facebook SDK的错误,该错误似乎与我的S3存储桶上的权限有关。我正在使用带有Amazon S3的Paperclip gem进行存储的R​​uby on Rails。

enter image description here

现在我的对话框设置如下:

FB.ui({
    method: 'feed',
    name: "Check out this project on WorkHands",
    picture: "https://workhands_images.s3.amazonaws.com/images/avatars/1100/original/2013-08-05_04_13_28__0000.jpeg?1376351034",
    link: link.attr('href'),
    caption: 'Work by',
    description: "hello",
    display: 'popup',
    redirect_ui: window.location.origin
}

我认为它与S3有关的原因是我可以从另一个src传入一个图像网址而不是S3(甚至是谷歌图片),对话框工作得很好。

我的理解是,Paperclip默认将每个对象的ACL设置为public_read。 https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/storage/s3.rb

我尝试设置类似于此处示例的存储分区策略:http://ariejan.net/2010/12/24/public-readable-amazon-s3-bucket-policy/

但这似乎没有解决任何问题。

对于上图,当我调用s3object.acle.grants.inspect时,我得到这样的XML:

[<Grant><Grantee xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"CanonicalUser\"><ID>0e77d1de2a82b95d7b735e0071296ef5f903fa17ba0b98ecfe5ab2d36a8f17d0</ID>

cush4437FULL_CONTROL,http://www.w3.org/2001/XMLSchema-instance \“xsi:type = \”Group \“&gt; http://acs.amazonaws.com/groups/global/AllUsers READ]

3 个答案:

答案 0 :(得分:1)

我认为这是“?”之后的数字。在你的网址中。 Facebook(可能?)严格按照“k = v”格式格式化URL查询,并且由于没有'=',因此不满意。

答案 1 :(得分:1)

从'https'中删除's'。 Facebook并不总能可靠地获取它们。

答案 2 :(得分:1)

事实证明,由于源url有两个子域,因此Facebook会抛出此错误。见https://stackoverflow.com/a/7320178/1296645

  

mybucket.s3.amazonaws.com - 抛出错误

     

s3.amazonaws.com/mybucket - 工作正常