我在使用 Facebook SDK 时遇到错误,这似乎与我的 S3 存储桶的权限有关。我正在使用 Ruby on Rails 和带有 Amazon S3 的 Paperclip gem 进行存储。
现在我有这样的对话框设置:
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-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\"> http://acs.amazonaws.com/groups/global/AllUsers阅读]