Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook FQL查询,带有来自Python脚本的POST请求_Python_Http_Facebook Graph Api_Facebook Fql - Fatal编程技术网

Facebook FQL查询,带有来自Python脚本的POST请求

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

我正在尝试使用以下代码进行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_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之间的区别是最佳实践,标准本身没有明确规定):-我基本上是在尝试模仿该页面上使用的查询。