0

我正在使用这个 facebook 服务返回个人资料图片。

<img src="http://graph.facebook.com/username/picture">

如果 fb 用户未设置个人资料图片,则服务将重定向到此 facebook 匿名人物图像:http://static.ak.fbcdn.net/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif. 我想避免展示这些。

有没有办法使用 javascript 来检测返回的图像是否为http://static.ak.fbcdn.net/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif. 该地址来自 CDN,所以我想知道我们是否可以检查文件大小是否为 <= 390B 并且 mime-type 是 image/gif?

编辑:不幸的是,仅涉及现代浏览器(HTML5 和画布)的解决方案可能对我不起作用,因为要求是我们仍然需要支持回 ie7。

4

1 回答 1

1

是的,您可以简单地使用 AJAX 提出请求并自己解析 MIME 类型。事实上,Facebook 包含这个标题:

访问控制允许来源:*

这授权了现在大多数浏览器都支持的CORS(跨源资源共享)。

如果您绝对必须支持旧浏览器,请查看 Open Graph 文档:

https://developers.facebook.com/docs/reference/api/using-pictures/

您可以使用 JSONP 获取其元数据,而不是直接获取图片。这应该在 IE7 中工作:

函数 checkPictureUrl(用户名, cb) {
  $.ajax({
    url: 'http://graph.facebook.com/' + 用户名 + '/picture?redirect=false',
    数据类型:'jsonp',
    成功:函数(json){
      // 用户只有一张默认头像
      如果(json.data.is_silhouette)
        返回 cb(null);
      别的
        返回 cb(null, json.data.url);
    },
    错误:函数(错误){
      CB(错误);
    }
  });
}
于 2012-12-19T21:11:37.450 回答