【发布时间】:2014-03-11 04:03:02
【问题描述】:
我在某处读到 Facebook 已为个人资料图片启用了交叉功能。我不确定专辑和其他东西,但实际上 Facebook 在我测试过的每个 URL 上都包含标题 Access-Control-Allow-Origin: *。
我已经尝试过标准的个人资料图片 URL
https://graph.facebook.com/PROFILE_ID/picture?width=25&height=25
还有 Akamai 网址:
https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash3/...
(后者由https://graph.facebook.com/PROFILE_ID/photos返回)
我的应用基本上是在做以下事情:
var img = new Image;
img.src = "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash3/...";
img.crossOrigin = "Anonymous";
img.onload = function() {
ctx.drawImage(img, x, y);
}
// Above code will be repeated several times
// And mixed with code that manipulates ctx
// Finally generetes data
var generatedImage = canvas.toDataURL();
// And post if back to Facebook
我的代码似乎一切正常(在所有主要浏览器上测试),但有很多用户在将画布内容上传回 Facebook 时报告间歇性错误。 不幸的是,我还无法让精通技术的用户报告带有正确错误描述的内容。现在我无法重现问题(甚至无法知道问题所在)。
到目前为止,我所知道的是,通过编写服务器端代理来提供 Facebook 图像,就好像它们是本地的一样,错误显然消失了,所以,在我开始深入研究奇怪的跨浏览器问题之前,这让我想知道,神秘OAuthException: An unknown error has occurred.、受污染的cavas等错误消息,我首先要回到基础:
是否为通过 Graph API 公开的每张图片启用了 CORS? (官方文档或可靠来源的链接会很好)。
【问题讨论】:
标签: html facebook-graph-api canvas cors