0

我正在尝试检索 facebook 用户个人资料图片的 URL。该调用返回我期望根据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}});
4

1 回答 1

1

您的第一个请求是针对简单 JSON,您的第二个请求是针对 JSONP 格式的响应。

Facebook 在其 JSONP 响应的开头添加了一条评论,以防止 Web 浏览器中存在名为“JSONP 劫持”的漏洞。由于对 graph.facebook.com 的任何请求都将包含 Facebook cookie,因此该评论将防止恶意网站简单地将请求包含在脚本标签中并秘密地代表经过身份验证的用户行事。

如果您想使用 JSONP 请求,而不是简单的 JSON 请求,则需要在将响应传递给 JavaScript 解析器之前去掉响应开头的注释。

于 2013-04-27T04:58:10.610 回答