我正在尝试检索Facebook用户个人资料照片的网址。该调用返回我期望的http://developers.facebook.com/docs/reference/api/using-pictures/#json JSON,但有一个问题 - 如果我指定callback = profile,我会在行的开头得到一个/ ** /。不幸的是,这导致了我用来抛出异常的JSON解析器(lift-json)。
有没有办法阻止/ ** /被退回?这看起来很奇怪,但我看不出它发生的任何原因,因此无法将其关闭。
我面临的问题如下所示,使用curl。
andrews-MacBook-Pro:~ doctorb$ curl "http://graph.facebook.com/582931709/picture?redirect=false&type=normal"
{"data":{"url":"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-ash4\/274518_582931709_901337157_s.jpg","is_silhouette":false}}
andrews-MacBook-Pro:~ doctorb$ curl "http://graph.facebook.com/582931709/picture/redirect=false&type=normal&callback=profile"
/**/ profile({"data":{"url":"http:\/\/profile.ak.fbcdn.net\/hprofile-ak-ash4\/274518_582931709_901337157_s.jpg","is_silhouette":false}});
答案 0 :(得分:1)
您的第一个请求是针对简单的JSON,而您的第二个请求是针对JSONP格式的响应。
Facebook在其JSONP响应开始时添加了评论,以防止在Web浏览器中出现名为“JSONP劫持”的漏洞。由于对graph.facebook.com的任何请求都将包含Facebook cookie,该评论将阻止恶意网站将请求简单地包含在脚本标记中并秘密地代表经过身份验证的用户行事。如果要使用JSONP请求而不是简单的JSON请求,则需要在响应开始时删除注释,然后再将其传递给JavaScript解析器。