Facebook 带有HTTP GET的FQL多查询在Graph API资源管理器中工作,但在其他任何地方都不工作?
此FQL多重查询,例如:Facebook 带有HTTP GET的FQL多查询在Graph API资源管理器中工作,但在其他任何地方都不工作?,facebook,get,facebook-fql,fql.multiquery,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 #pos
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)"}
在中可以完美地工作,但当您将其直接放在浏览器中时,您会得到:
{
"error": {
"message": "(#601) Parser error: unexpected '{' at position 0.",
"type": "OAuthException"
}
}
我错过了什么?Facebook在API中再次否决了某些内容?
我想使用GET(实际上在最后使用JSONP)执行FQL多查询,而不使用Javascript SDK
顺便说一下,我确信这不是授权/访问令牌问题。urlcode参数
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);
您需要使用:
不要使用'q',使用参数名'querys'。顺便说一句,我在同一url中遇到以下错误:{“error”:{“message”:“(#604)您的语句不可索引。WHERE子句必须包含一个可索引列。这些列在链接自的表中标记为*,”键入“:“OAuthException”}}是的,我也是,虽然我需要使用的真正查询与我作为示例给出的查询不同。奇怪的是,示例查询在graph API explorer中运行时没有出现此错误。无论如何,我真正的查询在正确地进行url编码后才能工作。我以前确实尝试过使用Javascript的URIEncode,但这还不够。使用“真实”URL编码-它可以工作。谢谢。根据,您应该使用的参数名称是
q
,而不是querys
:“您可以向/fql?q=query
发出httpget
请求,其中query
可以是单个fql查询或JSON编码的查询字典。”