是否有可靠的方法从 Facebook 平台获取访问令牌错误?
我们的 iOS/Android 应用程序需要保存用户的 Facebook 会话。这很好,只是我们从 Facebook 收到的身份验证错误似乎不一致。
本质上,如果我们从 Facebook 收到错误,我们想知道这是否需要用户重新进行身份验证,或者是否是由于间歇性错误(即由于某种原因受到速率限制)。
大多数 Facebook 图表错误似乎在错误消息文本正文中包含错误代码。
有些则不然。
例如
{“error”:{“message”:“验证访问令牌时出错:会话无效,因为用户注销。”,“type”:“OAuthException”}}
不包含错误代码,因此检查此错误的唯一方法是对“message”进行字符串比较。这似乎是一种非常不可靠的检查错误的方法。
似乎〜几乎〜可以检查json字符串中的“type”变量是否指示“OAuthException”,除了如果用户受到速率限制,那么也会抛出OAuthException,但不需要用户重新登录,只需要他们等待一小会儿,就不再发这么多了。
我已经看到这里列出的操作方法:https://developers.facebook.com/blog/post/500但这仍然存在一个问题,即我的游戏将要求用户重新登录 Facebook(如果他们碰巧)对发布到他们的墙上过于热心。
那么,有没有可靠的方法从facebook平台获取错误呢?
现在我能找到的最好的解决方案是解析消息字符串中的错误代码,如果我没有找到任何错误代码,则重新解析字符串以查找特定消息(例如“验证访问令牌时出错”),最后如果我无法确定错误是什么,只是panic并注销用户。
不幸的是我还没有找到处理这个问题的好方法。到目前为止,我发现的最佳解决方案是查看错误是否是 OAuthException,将错误消息与不需要重新身份验证的“可接受的失败”白名单进行比较,但如果错误与上的任何错误都不匹配这个白名单,我假设用户必须通过 Facebook 重新进行身份验证。
作为参考,我发现的唯一可以列入白名单的错误是“用户速率受到限制”错误。为了检测到这一点,我检查错误消息是否包含子字符串“(#341)”,这是该错误的错误代码(并不是说该错误是错误消息中包含错误代码的少数错误之一身体)。