我正在使用此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,所以我想知道我们是否可以检查文件大小是&lt; = 390B而mime-type是image / gif?
编辑:不幸的是,仅涉及现代浏览器(HTML5和canvas)的解决方案可能对我不起作用,因为要求是我们仍然需要支持回到ie7。
答案 0 :(得分:1)
是的,您可以使用AJAX简单地提出请求并自己解析MIME类型。事实上,Facebook包括这个标题:
Access-Control-Allow-Origin: *
授权CORS(跨源资源共享),现在大多数浏览器都支持。
如果您绝对必须支持旧浏览器,请查看Open Graph文档:
https://developers.facebook.com/docs/reference/api/using-pictures/
您可以使用JSONP获取其元数据,而不是直接获取图片。这应该适用于IE7:
function checkPictureUrl(userName, cb) { $.ajax({ url: 'http://graph.facebook.com/' + userName + '/picture?redirect=false', dataType: 'jsonp', success: function (json) { // user only has a default profile picture if(json.data.is_silhouette) return cb(null); else return cb(null, json.data.url); }, error: function (err) { cb(err); } }); }