繁体   English   中英

Facebook Messenger API 的 S3 GetObject 访问

[英]S3 GetObject access for Facebook Messenger API

我在 Amazon S3 上有一组用户图像,我想只允许访问我的 Facebook Messenger 机器人。 似乎最好的方法是创建一个存储桶策略,其条件只允许来自 Facebook url 的推荐。 但这不起作用 - 图像无法加载到机器人中。

这是我创建的存储桶策略(同时尝试 facebook.com 和 graph.facebook.com):

 { "Version": "2012-10-17", "Id": "Facebook referer policy", "Statement": [ { "Sid": "Allow get requests originating from Facebook Messenger", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*", "Condition": { "StringLike": { "aws:Referer": [ "https://www.facebook.com/*", "https://www.graph.facebook.com/*" ] } } } ] }

当我将存储桶策略更改回公共(如下所示)时,图像加载正常,因此问题必须是访问问题。

 { "Version": "2012-10-17", "Statement": [ { "Sid": "AddPerm", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::my-bucket/*" ] } ] }

任何人都有更好的解决方案来解决这个问题?

感谢上面的评论和Facebook 的用户代理文档解决了

工作桶策略是这样的:

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket/*", "Condition": { "StringLike": { "aws:UserAgent": [ "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)", "facebookexternalhit/1.1", "Facebot" ] } } } ] }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM