访问Python中的Facebook Graph API,访问令牌使用

时间:2017-11-07 18:48:35

标签: facebook python-2.7 api facebook-graph-api

我是Python的新手,并且一直在使用不同的教程/指南来构建从Facebook页面获取数据的程序,并将其写入AzureSQL数据库。在Facebook Developer页面中,我设置了一个应用程序,并创建了AppID和AppSecret。

这里是我认为问题所在代码的相关部分:

#create authenticated post URL
def create_post_url(graph_url, APP_ID, APP_SECRET):
    post_args = "/posts/?key=value&access_token=" + APP_ID + "|" + APP_SECRET
    post_url = graph_url + post_args

    return post_url

#render graph url call to JSON
def render_to_json(graph_url):
    web_response = urllib2.urlopen(graph_url)
    readable_page = web_response.read()
    json_data = json.loads(readable_page)

    return json_data    

def main():
    #define facebook app secret and app id
    APP_SECRET = "xyz"
    APP_ID = "abc"

    #define page username
    pagelist = ["porsche"]
    graph_url = "https://graph.facebook.com/"

在Facebook Graph API Explorer中,运行GET请求可以很好地工作并返回数据。

Facebook Graph API Explorer results

如果我在CLI中运行我的代码,则产生的错误如下:

    [vagrant@localhost SomeAnalysis]$ python src/collectors/facebook/facebookScaper.py
Traceback (most recent call last):
  File "src/collectors/facebook/facebookScaper.py", line 92, in <module>
    main() 
  File "src/collectors/facebook/facebookScaper.py", line 56, in main
    json_fbpage = render_to_json(current_page)
  File "src/collectors/facebook/facebookScaper.py", line 25, in render_to_json
    web_response = urllib2.urlopen(graph_url)
  File "/usr/lib64/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib64/python2.7/urllib2.py", line 437, in open
    response = meth(req, response)
  File "/usr/lib64/python2.7/urllib2.py", line 550, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib64/python2.7/urllib2.py", line 475, in error
    return self._call_chain(*args)
  File "/usr/lib64/python2.7/urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "/usr/lib64/python2.7/urllib2.py", line 558, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request

我一直在检查SO并找到类似的帖子但没有解释如何使用访问令牌。我尝试使用APP_ID和APP_SECRET将URL格式中的部分更改为仅使用Graph API Explorer中的长ACCESS_TOKEN,但产生相同的400错误。

感谢任何帮助。

/ K

0 个答案:

没有答案