获取Facebook访问令牌以进行图形API应用程序搜索

时间:2013-07-18 11:37:54

标签: python facebook facebook-graph-api

我一直在使用以下链接在图API上搜索Facebook应用程序已有一段时间了。请参阅以下链接,搜索其中包含“bingo”一词的应用程序。

https://graph.facebook.com/search?type=application&q=bingo

直到7月10日,当Facebook进行更改时,一切正常,请参阅以下https://developers.facebook.com/docs/reference/api/search/#access_tokens上的文字:

图谱API搜索界面在Q3 2013迁移中有待更改。有关更改内容的更多信息,请参阅博客文章。博客文章中列出的更改将于2013年7月10日生效。

现在,我尝试按照https://developers.facebook.com/docs/reference/api/search/#access_tokens上的示例获取应用程序访问令牌并将access_token =附加到上面的链接(https://graph.facebook.com/search?type=application&q=bingo),但我仍然从Facebook图表获得相同的响应:< / p>

{
   "error": {
      "message": "(#200) Must have a valid access_token to access this endpoint",
      "type": "OAuthException",
      "code": 200
   }
}

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您必须将访问令牌编码为请求的http标头。使用Facebook 1.1 API,建议使用oauth2 lib for python。

import oauth2 
import urllib

access_token_key = "Your token key"
access_token_secret = "Your token secret"

consumer_key = "Your consumer key"
consumer_secret = "Your consumer secret"


oauth_token    = oauth.Token(key=access_token_key, secret=access_token_secret)
oauth_consumer = oauth.Consumer(key=consumer_key, secret=consumer_secret)


req = oauth2.Request.from_consumer_and_token(oauth_consumer,
                                             token=oauth_token,
                                             http_method=http_method,
                                             http_url=url, 
                                             parameters=parameters)

req.sign_request(signature_method_hmac_sha1, oauth_consumer, oauth_token)

  headers = req.to_header()

  if http_method == "POST":
    encoded_post_data = req.to_postdata()
  else:
    encoded_post_data = None
    url = req.to_url()


urllib.urlopen(url, encoded_post_data)

要获得您的oauth令牌和秘密,您需要使用twitter定义和注册您的应用程序。 (http://developers.twitter.com

祝你好运, 戴夫