排查 Facebook graph.put_object 返回错误 400
我正在使用Facebook的Python开发工具包,并结合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 个回答
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
是一个字符串。
2
就像错误信息所说的,你需要创建并使用一个访问令牌(access token)。这里有一些更多的信息。抱歉我还不能“评论”,所以只能回答这个问题。
你可以查看这个链接了解更多内容:http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/