使用HTTP GET的FQL多查询 - 适用于Graph API资源管理器,但不适用于其他任何地方吗?

Yuv*_* A. 2 facebook get facebook-fql fql.multiquery

这个FQL多重查询,例如:

https://graph.facebook.com/fql?q={"posts":"SELECT actor_id,message,permalink,created_time,comments.count FROM stream WHERE source_id=me()","actors":"SELECT uid,name,pic_square,profile_url FROM user WHERE uid IN (SELECT actor_id FROM #posts)"}
Run Code Online (Sandbox Code Playgroud)

Graph API资源管理器中完美运行,但是当你在浏览器中直接使用它时,你会得到:

{
        "error": {
        "message": "(#601) Parser error: unexpected '{' at position 0.",
        "type": "OAuthException"
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?Facebook再次在他们的API中弃用了某些东西?我想使用GET(实际上最后使用JSONP)来执行FQL多查询 - 使用Javascript SDK.

顺便说一句,我确信这不是授权/ access_token问题.

Ash*_*ane 8

URLencode参数的值q.:,#是URL中的特殊字符.例:

https://graph.facebook.com/fql?q=%7B%22posts%22%3A%22SELECT%20actor_id%2Cmessage%2Cpermalink%2Ccreated_time%2Ccomments.count%20FROM%20stream%20WHERE%20source_id%3Dme%28%29%22%2C%22actors%22%3A%22SELECT%20uid%2Cname%2Cpic_square%2Cprofile_url%20FROM%20user%20WHERE%20uid%20IN%20%28SELECT%20actor_id%20FROM%20%23posts%29%22%7D

如果您使用PHP,请使用以下内容:

$url = 'https://graph.facebook.com/fql?q=' . urlencode($my_fql_query);
Run Code Online (Sandbox Code Playgroud)