Facebook FQL查询,带有来自Python脚本的POST请求
我正在尝试使用以下代码进行FQL查询:Facebook FQL查询,带有来自Python脚本的POST请求,python,http,facebook-graph-api,facebook-fql,Python,Http,Facebook Graph Api,Facebook Fql,我正在尝试使用以下代码进行FQL查询: def get_postData(to_post, access_token): postData = {} postData["method"] = "fql.query" postData["query"] = to_post postData["access_token"] = access_token return postData def make_request(url, to_post, access
def get_postData(to_post, access_token):
postData = {}
postData["method"] = "fql.query"
postData["query"] = to_post
postData["access_token"] = access_token
return postData
def make_request(url, to_post, access_token):
postData = get_postData(to_post, access_token)
return requests.post(url, data = postData).json()[u'data']
使用POST请求并不是文档中最好的记录,我无法让它工作。通过在方法下指定“fql.query”或“fql”(取自此处特定于Javascript的示例),我得到了以下响应:
{u'error': {u'message': u'Unsupported method, fql.query', u'code': 100, u'type': u'GraphMethodException'}}
当然,这在文件中没有涉及。如果没有该方法规范,我将返回:
{u'error': {u'message': u'Unsupported post request.', u'code': 100, u'type': u'GraphMethodException'}}
这些文件中也未涉及。我不能在这里使用get请求(这很简单),因为我正在进行一个相当大的查询,目前不会超出get请求的限制,但很可能在不久的将来
感谢您在解决此问题方面提供的任何帮助
编辑:请注意,我请求:
https://graph.facebook.com
首先,你想访问什么URL?我的意思是,为什么你需要FQL的POST请求?FQL用于获取数据,而不是过帐 根据docs(),您的请求应该如下所示:
-where QUERY-是对FQL的URL编码查询,TOKEN-您的有效访问令牌。您需要做的就是了解如何生成请求,如果您了解这一点,那么错误将对您更有意义
postData = {}
postData["method"] = "fql.query"
postData["query"] = to_post
postData["access_token"] = access_token
requests.post(url, data = postData).json()[u'data']
甚至不运行这个,我知道请求看起来像
POSThttps://graph.facebook.com/?method=fql.query&query=THE_QUERY&access_token=THE_TOKEN
这不是method/fql.query
的fql.method,如您提交的文档中的相对url所示
删除规范(我不知道为什么要这样做)显然会导致未知错误,因为这是您现在提出的请求
POSThttps://graph.facebook.com/?query=THE_QUERY&access_token=THE_TOKEN
正确的请求将是
GEThttps://api-read.facebook.com/restserver.php?method=fql.query&query=THE_QUERY&access_token=THE_TOKEN
或
GEThttps://api.facebook.com/method/fql.query&query=THE_QUERY&access_token=THE_TOKEN
我不完全确定批处理使用什么端点来允许HTTP POST到方法/fql.query,因此除非您实际执行批处理请求,否则我不会依赖它
最后,使用fql.query
可能不是最好的方法,因为它正在被弃用
我仍然不确定您的查询为何会如此之长,以至于超出GET请求限制。考虑重新评估如何将查询结构化为多查询或批处理。 -您需要阅读我的文章。我不能像你描述的那样做,因为我不能使用get请求。如果你阅读facebook文档,他们确实会接受fql查询的POST请求(POST和GET之间的区别是最佳实践,标准本身没有明确规定):-我基本上是在尝试模仿该页面上使用的查询。