【问题标题】:Troubleshooting Facebook's graph.put_object that returns error 400Facebook 的 graph.put_object 返回错误 400 的故障排除
【发布时间】:2010-12-27 22:32:50
【问题描述】:

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

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

但是,这会引发错误 400 Bad Request,我似乎无法尝试捕获它,因此我可以获得重要信息。

如果请求错误,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))

然后使用 REST 客户端(如 Firefox 扩展程序)再次发出请求。回复为我提供了继续操作所需的信息。但是,如果我能在我的应用程序中获取错误消息会更好。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 感谢凯尔的回答,实际上这是可以返回的众多消息之一,但是我不确定在调用“graph.put_object”时如何获取此消息
    【解决方案2】:

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

    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 是一个字符串

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-01
      • 1970-01-01
      相关资源
      最近更新 更多