actionscript-3 - 是否有可靠的方法来确保已为所有 Facebook 图像服务器检索跨域策略文件?

标签 actionscript-3 facebook crossdomain.xml

我最近开始整合 Facebook Connect AS3 应用并通过 Graph API 检索对象和图像。

在本地以外的任何地方运行,我收到以下形式的安全错误:
SecurityError: 错误 #2122: 违反安全沙箱:Loader.content: xxxx 无法访问 http://photos-a.ak.fbcdn.net/xxxx.jpg 需要一个策略文件,但在加载此媒体时未设置 checkPolicyFile 标志。

如果我添加一行表格:
Security.loadPolicyFile("ht_tp://photos-a.ak.fbcdn.net/crossdomain.xml");
- 那我对那台服务器没问题,但似乎有任意数量的域具有照片-[字母]格式。我已经为字母表中的每一个都添加了一个 - 它可以成功地检索跨域文件 - 但它似乎不是一个好的解决方案,并且不适应 Facebook 可能 将实现的任何新托管设置 future 。

我考虑过的一件事是基于每个图像检索跨域策略文件,在发出图像请求之前从图像 URL 捕获域。不幸的是,至少通过 Graph 解决方案(我还没有仔细研究其他解决方案),他们的服务器在发出请求后解析图像 url,从更通用的东西,例如:
ht_tps://graph.facebook.com/[objectId]/picture?type=small&access_token=[accessToken]

是否有人找到了一种更可靠的方法来确保可以在不违反安全沙箱的情况下检索图像?或者 Facebook 是否维护了一个开发者需要关注的明确列表?

谢谢!

最佳答案

在您的应用程序的初始加载 facebook 跨域,如下所示;

Security.allowDomain("*");
Security.allowInsecureDomain("*");
Security.loadPolicyFile("http://graph.facebook.com/crossdomain.xml");
Security.loadPolicyFile("https://graph.facebook.com/crossdomain.xml");
Security.loadPolicyFile("http://profile.ak.fbcdn.net/crossdomain.xml");
Security.loadPolicyFile("https://profile.ak.fbcdn.net/crossdomain.xml");
Security.loadPolicyFile("http://profile.cc.fbcdn.net/crossdomain.xml");
Security.loadPolicyFile("https://profile.cc.fbcdn.net/crossdomain.xml");
Security.loadPolicyFile("http://fbcdn-profile-a.akamaihd.net/crossdomain.xml");
Security.loadPolicyFile("https://fbcdn-profile-a.akamaihd.net/crossdomain.xml");
Security.loadPolicyFile("http://fbcdn-sphotos-a.akamaihd.net/crossdomain.xml");
Security.loadPolicyFile("https://fbcdn-sphotos-a.akamaihd.net/crossdomain.xml");

然后每当您想从 facebook 加载图像时,使用 Loader 的 LoaderContext 将 checkPolicy 标志设置为 true,如下所示;

var context:LoaderContext = new LoaderContext();
context.applicationDomain = ApplicationDomain.currentDomain;
context.checkPolicyFile = true;

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadFacebookPhoto);
loader.load(new URLRequest(YOUR_FACEBOOK_PHOTO_URL),context);

private function onLoadFacebookPhoto(e:Event):void
{
    addChild(Bitmap(LoaderInfo(e.target).content));
}

关于actionscript-3 - 是否有可靠的方法来确保已为所有 Facebook 图像服务器检索跨域策略文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3448278/

相关文章:

SSL、自定义 TLD、Crossdomain.xml 和 Adsense。他们能打得好吗?

java - 如何访问Flash内部的外部数据?

php - Flash/PHP 文件上传速度问题

android - Recyclerview 在 onClick 方法上提供了错误的位置

Facebook 图谱 API 见解

php - 为规范关闭全局 XSS 过滤。 Controller ?

Flash Crossdomain.xml 问题

regex - AS3正则表达式问题

apache-flex - 围绕一个圆圈动态间隔数字

actionscript-3 - Flash AS3 结束时如何循环播放声音?