如何以编程方式判断图形api错误是什么类型的错误?

时间:2011-08-24 22:34:44

标签: facebook facebook-graph-api error-handling

使用/ me / feed端点在Facebook上向我的Feed发送帖子时,我遇到了不同类型的错误。

  • 当我两次发送同一帖子时,我收到了400 http状态并出现此错误:

    {"error":{"type":"OAuthException","message":"(#506) Duplicate status message"}}
    
  • 当用户删除发布权限时,我获得了400 http状态并出现此错误:

    {"error":{"type":"OAuthException","message":"(#200) The user hasn't authorized the application to perform this action"}}
    
  • 用户删除应用后,我收到了400 http状态并出现此错误:

    {"error":{"type":"OAuthException","message":"Error validating access token: The session has been invalidated because the user has changed the password."}}
    

如果他删除了我们的应用程序或取消了我们发布的权限,我希望能够重新告知用户。我该怎么知道?所有错误都返回状态代码400。所有错误都返回“OAuthException”类型。其中一些在消息中有一个状态代码。这是我可以检查的东西,并保证它不会改变吗?第三个怎么样?这个特定错误是唯一没有代码的错误吗?在某处有这些代码的列表吗?

2 个答案:

答案 0 :(得分:0)

在致电/ me / feed之前,您应该验证用户会话。

通过这种方式,您可以测试他们是否已登录,并相应地重新路由/发送到登录。

最简单的方法是首先对/ me / feed进行GET,看看是否有数据或错误。

如果一个错误是一个安全的赌注授权已经下降。您应该让用户重新登录/授权App。

第三个错误是特定的,因为此时您知道用户在流程中的位置。他们已登录并进行了授权,但访问令牌无效或已用完。 reauth再次。

http://developers.facebook.com/docs/authentication/应该提供帮助

答案 1 :(得分:0)

我用来验证用户的最佳方法是检查/我是否返回任何异常。该Feed可能会产生混合结果,尤其是如果用户未授予应用程序读取其Feed的权限。

您还可以对users.get进行方法调用,以确定用户为应用程序提供的权限。