我看到一些代码看起来像这样:
graph = facebook.GraphAPI(User_Access_Token)
graph.request("search", {'q' : 'social web', 'type' : 'page'})
这似乎可以获取包含关键词' social web'的所有数据。但我不明白为什么我们可以提出这样的要求。 我阅读了帮助文档(graph.request),其中说明了
请求(self,path,args = None,post_args = None,files = None,method = None)facebook.GraphAPI实例的方法 获取Graph API中的给定路径。
它没有提及"搜索"一点都不。
答案 0 :(得分:0)
我有同样的问题,我假设你也安装了pip install facebook-sdk
,我再次假设你的来源是Mining the Social Web: Analyzing Data from Facebook, Twitter, LinkedIn, and Other Social Media Sites - Feb 11, 2011 by Matthew A. Russell
。 facebook-sdk版本是facebook_sdk-2.0.0。我不确定版本控制系统与Facebook的GraphAPI是否相同,但如果是,那么它的API文档是not supported anymore。我从here下载了库,在/facebook-sdk-2.0.0/facebook/__init__.py
中您可以看到这段代码。
def request(
self, path, args=None, post_args=None, files=None, method=None):
"""Fetches the given path in the Graph API.
We translate args to a valid query string. If post_args is
given, we send a POST request to the given path with the given
arguments.
"""
args = args or {}
if post_args is not None:
method = "POST"
# Add `access_token` to post_args or args if it has not already been
# included.
if self.access_token:
# If post_args exists, we assume that args either does not exists
# or it does not need `access_token`.
if post_args and "access_token" not in post_args:
post_args["access_token"] = self.access_token
elif "access_token" not in args:
args["access_token"] = self.access_token
try:
response = requests.request(method or "GET",
FACEBOOK_GRAPH_URL + path,
timeout=self.timeout,
params=args,
data=post_args,
proxies=self.proxies,
files=files)
except requests.HTTPError as e:
response = json.loads(e.read())
raise GraphAPIError(response)
headers = response.headers
if 'json' in headers['content-type']:
result = response.json()
elif 'image/' in headers['content-type']:
mimetype = headers['content-type']
result = {"data": response.content,
"mime-type": mimetype,
"url": response.url}
elif "access_token" in parse_qs(response.text):
query_str = parse_qs(response.text)
if "access_token" in query_str:
result = {"access_token": query_str["access_token"][0]}
if "expires" in query_str:
result["expires"] = query_str["expires"][0]
else:
raise GraphAPIError(response.json())
else:
raise GraphAPIError('Maintype was not text, image, or querystring')
if result and isinstance(result, dict) and result.get("error"):
raise GraphAPIError(result)
return result
我希望它有所帮助。