繁体   English   中英

python:facebook GraphAPI请求函数

[英]python: facebook GraphAPI request function

我看到一些代码看起来像这样:

graph = facebook.GraphAPI(User_Access_Token)
graph.request("search", {'q' : 'social web', 'type' : 'page'})

这似乎可以获取包含关键词“社交网络”的所有数据。 但我不明白为什么我们可以做这样的要求。 我读了帮助文件(graph.request),其中说

request(self,path,args = None,post_args = None,files = None,method = None)facebook.GraphAPI实例的方法获取Graph API中的给定路径。

它根本没有提到“搜索”。

我有同样的问题,我假设你也安装了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文档。 我从这里下载了库,在/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

我希望它有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM