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

问题描述 投票:0回答:4

我遇到了 Facebook SDK 错误,该错误似乎与我的 S3 存储桶上的权限有关。我使用 Ruby on Rails 和 Paperclip gem 以及 Amazon S3 进行存储。

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 有关的原因是我可以从 S3 上的另一个 src 传入图像 url(甚至从谷歌图像),并且对话框工作得很好。

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

我尝试设置与此处示例类似的存储桶策略:http://ariejan.net/2010/12/24/public-read-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\">http://acs.amazonaws.com/groups/global/AllUsersREAD]

ruby amazon-s3 paperclip
4个回答
1
投票

我认为是“?”后面的数字在你的网址中。 Facebook(可能?)对“k=v”格式的 URL 查询格式要求严格,而且由于没有“=”,所以它很不高兴。


1
投票

从“https”中删除“s”。 Facebook 并不总是可靠地获取它们。


1
投票

事实证明,Facebook 抛出此错误是因为源 url 有两个子域。请参阅https://stackoverflow.com/a/7320178/1296645

mybucket.s3.amazonaws.com - 引发错误

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


© www.soinside.com 2019 - 2024. All rights reserved.