对Facebook的graph.put_object进行故障排除,返回错误400

时间:2010-12-27 22:32:50

标签: python google-app-engine facebook-graph-api urllib2

我正在使用Facebook Python的SDK和Google App Engine,并打电话进行签到:

graph.put_object("me", "checkins", message="Hello, world", place="165039136840558", coordinates='{"latitude":"38.2454064", "longitude":"-122.0434404"}')

然而,这会引发错误400错误请求,我似乎无法尝试捕获它,所以我可以获得重要信息。

在一个糟糕的请求中,Facebook应该返回,下面的对象可以帮助排除故障并解决问题,但我不确定如何检索此对象:

{
   "error": {
    "type" : "OAuthException",
    "message" : "An active access token must be used to query information about the current user."
    }
   }

[编辑]

我暂时能够通过以下方式找出问题: 记录发布数据

logging.info("LOG" + str(post_data))

然后使用像Firefox扩展程序这样的REST客户端再次发出请求。响应为我提供了我需要继续的信息。但是,如果我可以在我的应用程序中获取错误消息,那会更好。

2 个答案:

答案 0 :(得分:2)

如错误所示,您需要创建和使用访问令牌: 这里有更多信息。对不起,我还不能“评论”,我被迫回答。 http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/

答案 1 :(得分:1)

我遇到了同样的问题,以下是如何获取该错误消息:

import urllib2

url='https://graph.facebook.com/me/?method=post' # this will 400 b/c it has no auth token.

try:
   resp = urllib2.urlopen(url)
except urllib2.HTTPError as e:
   error_reason = e.read()

然后您可以使用json模块检查Facebook发送的JSON错误:

json_error = json.loads(error_reason)

请确保您使用json.loads,因为error_reason是一个字符串